潜心写代码
昨晚我本可以很闲,留出一大堆时间来做运动,但实际上我却耗在了办公室,坐在电脑前写Excel VBA代码。我也搞不懂这种选择对我来说到底是因为我懒不想动,还是因为我觉得在检查过后或者之前我总是很有冲动做这些需要思考的事比如说写代码。这种时候我的激情会特别澎湃,可能是因为紧张,也可能是因为放松。这种时候我更容易集中精神专注在一件事上面,而且因为在做紧绷的神经以外的事,所以对我来说那是另外一种放松,虽然实际上写代码这种事对我来说一点都不轻松。
上个星期我写了能够进行分仓汇总的代码,那个代码是汇总,会自动汇总工作簿里面除了文件名含有“总”字的工作表的某些特定区域。而昨晚我写的那个代码是加一个选择项,只汇总我指定的含有某些关键字的数据。因为我需要汇总的是账本,所以这里我选择的关键字是月份,而因为我做的那些账本只在月末有数据,所以我只需要指定月份就可以了。理论上在之前的代码的基础上,我应该不需要费太大的劲,但昨晚我却又耗掉了一个晚上大概两个小时多的时间。一开始是构思应该在哪里加循环、在哪里加判断,但当我把代码组合好以后却发现我没办法让某个单元格里的值与我的目标值以我设想的方式对比。首先是获取单元格的值我没有写好。当我把那个写好以后却发现从人的角度考虑,那两个东西已经是相等的,但是程序却判断那是两种不一样的东西。原因在于我用作比较的那个东西是用InputBox录入的,而如果不以方法的形式使用InputBox,InputBox获取到的东西是字符串,但我单元格里的却是一个数字,用数字跟字符串比较,虽然看上去一样,但实际上是两回事。如果不是在VBA里用逐行调试,我不会发现这个问题。同一个数字,有双引号跟没双引号是不一样的。所以后来我在录入数据后,在把单元格的值跟录入作比较的时候我进行了一个格式转换,把字符串转为数字。进行了这些操作以后,我终于达到了我想要的效果,我不确定这么干运行时间一定会比我汇总全部的更快。虽然最终汇总出来的东西肯定短很多,但是理论上要进行比较筛选更复杂。
在自动汇总了多个工作表的数据以后,实际上我还得手动用数据透视表对汇总出来的数据进行处理。通常来说处理方式是恒定的,但也不排除会有一些特殊情况。既然数据透视表能生成某些效果,我觉得如果在VBA上更进一步我可以直接生成一个直接就是我目标汇总形式的数据。但话说回来,这种方式虽然一步就位,但是在查错方面反倒不如数据透视表爽快。因为数据透视表除了能展示合并数据以外双击单元格你还能看到详细的源数据,但如果我一步就位显然就做不到这个了。又或者我可以在VBA程序里加入一个生成目标格式数据透视表的过程,这样估计就能两全其美。
数据的分与合当我能把握的很好的时候,我就再也不怕什么智能化系统几万年都上不了线,即便上线了也是满屏的傻瓜bug了。
还没有评论