Excel里写长公式
不知不觉好像我已经快一个星期都没有碰python了,原因是在家的时候我懒惰,在单位的时候,一心在整理各种各样的数据,也正是因为我正在整理数据,所以其实在我的骨子里是念念不忘想使用python这个大招的。在数据处理方面。我觉得,我正在用Excel人肉操作的那些,如果以一个正确的方式丢给python,那绝对是几秒钟就能完事。明明我知道可以这么干,但现在我还没到达那个境界。
昨天我整了一个巨长的公式。在最开始的阶段,我在普通的Windows记事本里折腾,但是当公式嵌套得越来越多以后,显然普通的记事本把我直接看晕了。我把那个东西放回Excel,但实际上Excel这个怪物根本不给我显示到底那些一对又一对的括号谁跟谁匹配。我也试过把那条长长的公式放到VS Code里,我随便打了个py文件往里面放Excel公式。虽然某些地方高亮了,但是括号匹配还是很不行。如果那不是一个Excel公式,而是一个python文件,我早就给它写很多注释、搞很多回车了。不就是个嵌套了三层的if嘛。但实际上,如果这是在python,完全可以不嵌套,用三组平行的if就解决问题了。最终,我把那条很长的公式贴到了Notepad++里。经过一番折腾,我觉得Notepad++才是最适合编辑Excel长公式的工具。虽然Notepad++不能自动生成成对的括号,但是在判断括号对应性方面,我感觉已经足够了。他们会把成对的括号用加粗的红色显示。当你选择这一边的括号的时候,那边的括号就红色加粗了,这样我就能搞清楚自己编辑到了哪一层括号。习惯了用python之后,什么括号,什么使用范围之类的东西全部用冒号、用缩进就解决了,回到Excel里要用一句话表达,本来用三句短话就能表达清楚的东西的确挺烦人。为什么Excel编辑公式就不能用回车,不能用缩进解决问题呢?如果有几个回车的话,显然那条公式到底在表达什么就很明白了。在Excel的某个单元格里回车,那就是要执行公示的节奏。如果是数组公式,你还得用组合键结束。有时我实在不明白他们为什么非得一定要用组合键呢?为什么不能在公式外面加一个什么函数包裹,让软件明白就在执行数组公式呢?
习惯了python的简洁与人性化后,回到Excel让我各种不习惯。在python里,单引号和双引号都可以用来表达那是字符串,但Excel要表达字符串,要表达某些固定格式,必须用双引号。另外一个人让我不习惯,因为我已经彻底忘记的就是在Excel里面不等于用的是<>,而在其他编程语言里面,不等于的表达方式是!=。所以当我在Excel里使用!=的时候,Excel懵逼了。于是我不得不去搜索,进而发现是我自己搞迷糊了。还记得小学的时候,家长们总担心孩子如果一边学汉语拼音一边学英语会不会张冠李戴,用汉语拼音来读英语或者用英语来读汉语拼音。这是两种彻底不一样的东西,虽然他们的最终结果就只是个发音而已。我是小学一年级开始学汉语拼音的,三年级的时候开始学英语口语。在我开始在学校正规接触英语之前,我的汉语拼音已经很熟练了,而在我接触编程语言之前,我接触过Excel,但只是接触过而已。对二者的深入了解几乎可以说是平行发展的,所以混淆二者的某些基础用法我觉得可以理解。
最终,我把那个我想做到的效果用一条很长的公式表达了出来。那条公式针对的不是具体的某些单元格里面的东西,所指代的位置全部都是相对的。所以根本不存在拖拉以后会出现状况。有了这条公式我就彻底做到了对某个仓开始入库、结束入库以及期间库存精准定筛选定位。
那条长公式在成功整出来之前,我先在纸上列出了几个条件。代码这种东西是非常讲究思路的啊啊啊。