|
底层逻辑的核心思想是减少 Excel 的工作量。Excel 是一种电子化的工具,那么必然有它自己的内在逻辑。我们需要具备一定的计算机知识,才能更好的使用它。
Excel 最大的缺陷,同时也是它引以为傲的优势,就是所见即所得的 GUI 表现技术所带来的自由。一个人,无论怎么使用 Excel 都是可以被接受的。我们可以用大量在计算机科学看来无用的、重复的、冗余的数据来充斥一张表格,让它变得庞大、臃肿、运行缓慢,而且错误百出。但是只要这张表格可以被人类理解,那么它就可以继续存在。
像我们做数据中心的,以前每一个操作步骤,比如在维护更新之后重启一个带有复杂集群架构的自动化工具,都是有手顺书的。按照手顺书一二三四步走下来,看到什么情况走哪一步,总不会有错。
那个时候就是,做一次这样的大维护动作,就是需要把 Terminal 里面的图截下来,贴到 Excel 里面去,作为证据。一个贴图就是好几 mb,做个几百步,Excel 文件庞大无比。这个截屏贴图就是一种冗余的数据保存方式。但是它并不傻,因为截图比起贴文本,有一定的抗篡改性。作为人工操作的证据,防止被客户刁难,是合适的。
但是我们在其它场合,贴图就不那么合适了。在前几期中我们知道,数据是有维度之分的。贴图是维度最低最低的一种数据了。它是傻傻地保留每个像素点的位置和颜色信息来的。我们把这种低维度的数据想要还原到计算机可以理解的维度,是伴随着逆向做工的过程。比如使用 OCR 识别,比如用人手敲键盘录入。
如果大家没有掌握底层逻辑思维,使用 Excel ,其实也就是在一个大山的上坡上,东南西北没有意识地,自由自在地乱跑。等需要我们出活儿的时候,才定下来,仰头看看出活儿需要的位置,埋头艰难地爬山,并且骂骂咧咧地抱怨 Excel 真坑,真难用。
例子 0x06 用零还是空格子?
这里有个朋友想要把她工作表中所有空白的地方变为 0。这是一个比较经典的,在底层逻辑上的逆行。
如果没有数据处理的底层逻辑意识,很难判断出,我们在使用 Excel 的时候,在需要表达空值,或者空值等价的时候,到底是留着不写好,还是写 0 好。
咋看上去,这两个方法似乎没有明显的优劣之分。甚至写 0 还需要打字进去,多出一步。空着多好呀。不填就是空着。
数据处理的底层逻辑意识在这个时候就可以发挥自己的作用了。如果一个人有这个意识,那么很轻易就可以得出结论:一个单元格空着,和写 0,在逻辑上的含义根本不一样。
单元格空着,除了可以给我们提供某种空值或者空值等价的评估之外,还有一层含义,就是“这个格子我没碰过”。而写了 0 的含义,就把这个限制更进一步细化,它的含义是“这个格子被我弄脏了”,而且还有一层含义是,“这个格子中放置的值是数字类型”,意味着它可以进行算数比较,算术操作,享受一切数字类型的好处,制约于数字类型的限制。
如果我们把这个两个概念混淆了,实际上也就是丢掉了“这个格子有没有被我们碰过”这个判断,相当于信息的渠道减少了一层。于是事实上,我们在处理类似的表格的时候,就不知道,某一列,既有 0 又有空白格子,到底是指,数学意义上的零,还是这一行因为失误或者故意,没有被录入者填写。
所以从信息丰富度的角度来看,空白单元格和 0 分开对待的维度,比混淆这两者要高。
但是从那个答案中,我最后的解决方案,就是通过我们 数字格式中的正数负数零的三目表达式,把 0 值变为空值的手法,在视觉化的角度,0 的维度要比空白单元格又要高了,因为 0 是可以通过 Excel 的功能,以空白值展示给人类的,而反之,将空白格以 0 展示,则需要花一番功夫。
无论是区别对待,还是 0 的维度高于空白单元格,在数据处理的底层逻辑中,明确写 0 都是要优于 0 blank 无差别混用的。
其本质就是,如果你的工作需要你对付一大块区域中 0 和 blank 的转换,在 VBA, Python 这种需要起手式、吟唱时间还有学习门槛的高魔法手段,和设置数字格式这种低魔法手段里面选一个,很明显是后者更优。而后者需要我们明确界定 0 和 blank。
而小白朋友们,就没有这样的意识。在制表阶段属于随心所欲的,反之留着空和写 0 进去感觉都差不多。但是事实上这两种方法有优劣在里面。而且优劣也不是一概而论,是根据实际情况判断的。没有底层逻辑思维和意识,就不会有这么多考虑,也就经常在火急火燎的时候,临时想要逆行,然后喊累,喊难。
80% 的 Excel 困难,都是因为使用者对于数据处理的底层逻辑逆行造成的;剩下的 19% 是因为使用者上游的工作流,对于底层逻辑进行了逆行,到了使用者手里,必须要擦屁股。只有 1% 是真正棘手的困难问题本身造成的。
所以小白哭天喊地地觉得 Excel 太难用,其实大多数时候是在擦自己的屁股,或者在擦别人的屁股。
0x07 不要急着处理原始数据
这个苦主其实我挺喜欢的。因为从截图来看她的表格相当规整,是花了大功夫做漂亮的。对这种苦主,没办法生气。
但是这里摆这个例子当典型,是因为她的表格已经被预处理过了,或者说,原始数据一到手,就直接跳过了把它原封不动就地电子化的步骤,直接往可视化的高层转了一步。
这一转,完蛋。现在她想要与这个可视化平行的一个状态,即,从描述性的表格,到正答率的柱状图统计,就犯难了。
在我们系列里,讲到 Excel 底层逻辑经常用的比喻里面,我经常会用登山,河里游泳之类的。这个跳步骤的行为,就好比直升飞机降落在山顶,小白下飞机看都不看地图就往一条路走了一大段。结果打开地图,发现想去的地方还得再回到山顶,然后另择一条路。
一回头,台阶耸立,只能满脸痛苦往回爬。
所以别急啊!千万不要急!不要跳步骤。特别是底层的步骤,最好不要跳过。你比如你从底层往高层顺着走,你熟练,比如你做 conditional format,人家都用中间表缓冲,你在脑中经过一番计算,直接给出公式,并且成功运行,这样没毛病,没人说中间表是必须的,要的只是条件格式效果。
但是绕开一个底层步骤,特别是没有特殊理由的情况下,是万万不可取的。运气好,成果出来了这件事情就结束了,你也不用纠结什么了。运气不好,你还是得回去做一遍底层的步骤,然后才好开始做另一种高层的可视化呈现。
因为你永远不知道基于同样的原始数据,还会压榨出什么其它需求来。
你坚持不走底层数据这一步,觉得麻烦,或者根本没这意识,那么你天天就惶惶不可终日,领导一唤你的小名儿你就头皮发麻,触发深夜面对 Excel 抓耳挠腮加班的 PTSD。
注意,这里并不是说,从一个高层效果跳到另外一个高层效果是【不可能做到】的;比如我能不能从这个例子中的苦主的表格,直接生成柱状图呢?答案是可以的。答案总是可以的。因为 Excel 是可以施展魔法的,而在计算机领域,魔法就是万能的。对于足够强和时间足够多的会 VBA Python JavaScript C# 的人来说,没有什么需求是不能实现的。但是复杂度真的会爆炸,而且不是说仅仅只是这一次写的复杂度会爆炸,而是以后伴随每一次的重构、修改、功能增加、例外增加、Debug,复杂度都是会重新在原有的爆炸基础上再进一步爆炸的。
这就好比足够高的电压确实是可以击穿空气的,但是你不能因此推论说空气是导体。毕竟足够高的电压可以击穿一切物质。
而这个复杂度的乘阶式的爆炸,在捋顺底层到高层的工作流结构中,从一开始的根源上就不会出现。你不用魔法不会出现复杂度爆炸,用了魔法同样也不会复杂度爆炸。
0x08 Excel 魔法与底层逻辑
这里纠正一个非常泛滥的错误观点:只要我魔法学的够好,我就可以无视底层思维
这也是很多卖课的广告、营销号喜欢推销的一点。他们喜欢把苦主的痛苦,更多地归结到是因为苦主是不会编程造成的这一点上。
其实我的观点是,苦主的痛苦,更多是因为没有掌握底层逻辑造成的。编程是一个通用的解决方案。它是解决具体问题的。我遇到了一块大石头,我用手挖,不如铲子挖好;铲子不如挖掘机好;挖掘机不如盾构机好。编程是这样一种概念。
底层思维是什么呢?为什么我一定要跟这块石头埂呢?站在一个更高的角度看问题,我能不能选择一条没有石头的道路呢?
底层逻辑的逆行所产生的额外复杂度带来的工作量,是会随着步骤的增加而扩散和放大的。如果说人肉做,只需要 2 - 3 步,那么我逆行底层逻辑,产生的额外工作量还可以控制;但是在代码的设计中,我们往往需要分很多额外的中间步骤来辅助我们代码逻辑的设计和思维,往往会导致每一个环节都会因为逆行底层逻辑需要处理更多的各种乱七八糟的例外情况。而且重构啊重构,上流一动,这些乱七八糟的因为逆行而带来的坑,都会重新复活开始再次攻击你。
魔法和底层逻辑之间就没有必然联系。我见过编程比我厉害得多的人,但是他们中的有些,底层逻辑依然可以不如我清晰,所以他们的表并不好处理。而相反,也存在着大量非常注重底层逻辑,用于制表和处理数据,但是不会编程,或者只会基础编程的 Excel 高手,比如之前我提到的那个会计小姐姐,从空白表直接现场手撸了一张非常规整而且专业、复杂的财务报表,整个过程10分种不到。低魔法用的好,也可以很闪光。
编程有用,没错。但是对于使用 Excel 的熟练度来说,底层逻辑思维的提升,意义和作用远大于编程。因为它专注的并不是问题的解决的具体方式,而是【我怎么从源头上,顺着 Excel 这个工具的特性,杜绝额外复杂度的产生】
但是坏消息是,底层逻辑思维并不容易传授。很难系统地讲清楚。比如一个没有计算机基础的小白,是非常非常难去具象化各种维度高低不同的数据结构之间有什么意义的。因为计算机科学本来就是一个反直觉的知识体系,比如从计算机的角度,3 这个数字和 6778332 这个数字,如果他们的数据类型相同,对于静态的内存来说,是没有本质区别的;所有的大小比较和数字运算意义,都是人类强行赋予他们的。在足够微观的尺度,它们只是一大堆充电或者不充电的电容器的集合罢了。
由于这个电子抽象化到真实生活的跨度过于庞大,所以,有非常多的小白,面对 Excel,所采取的思路就是把它当作一种电子化的纸和笔。70 年代之前是怎样使用黑板和纸笔来记录和计算的,2022 年面对 Excel 就是只是把写字换成了打字;而 Excel 充斥着的公式函数工具,也只是被当成了现实生活中的计算器,圆规、尺子,和彩色马克笔的电子版而已。
但是一定一定记住,Excel 是电子表格,而不是表格的电子化。如果你可以学会从计算机,从机器的角度去看待 Excel 的各种特点,各种特性,以及各种原理,忘记圆规、直尺、彩色笔、和纸张时代是如何做表的,那么就可以更顺利地掌握底层思维。 |
|