牛逼的数组
我把《别怕,Excel VBA其实很简单》这本书看完以后我才发现自己略略明白到了数组的牛逼之处。在书本的某些章节提到过数组,但没有很详细地展开。毕竟在Excel的VBA里,即便你不懂得数组,你也依然可以得到你想要的效果,只不过用数组跟用其它方式对比,其它方式的效率会差了一大截而已。直到我把这本书看到倒数第几页,他们举例子的时候,我才恍然大悟。看书的时候我并不觉得不用数组有什么问题,毕竟那些思路都是很明白的。暂时来说,我要解决那些问题在高手的眼里不过是小菜一碟而已,只不过对我这个新手来说,必须得费九牛二虎之力才能解决而已。
如果只是用Excel的VBA做一些格式的转换,尤其门面工程的格式转换,根本用不着数组这种高端东西,但是,如果要对批量的数据进行处理,比如说筛选或者转换,数组的效率要比频繁地操作单元格高效很多。当然,如果你的处理量很少,比如说,数据在一页纸之内,用不用数组都无所谓,反正都是秒杀出结果,但是,如果你要处理的是几十个工作表里面的几百行数据。用数组处理就意味着如果你的程序得当,可以秒杀得到结果。我这里指的秒杀,是答案会在0.5秒之内展示出来。通常来说,人的反应时间是0.2-0.3秒,0.1秒的差别几乎看不出来。而之所以我有这个猜测,是因为我做过字幕时间轴的调整。如果字幕的出现和消失完全按照音频音频来,你会觉得那人开始说话了,但是还没有字幕,或者那人的话还没说完字幕就没了,或者字幕消失得很着急,所以,通常来说,在正常语速的情况下,字幕要比音频早起码0.15秒出现,结束时间则要控制在音频结束后0.3秒左右。结束时间到底要延迟多少主要看说话人的语速,如果那是很干脆的一个词,又或者那个人说话非常快,那么这个结束时间得控制到0.15秒以内,但如果那个人说话很慢,又或者他磨磨蹭蹭,每句话之间都要间隔一段时间,但实际上那句话是连续的,那段字幕的结束时间可能要跟下一句话的开始时间连上,0.5秒的延迟很正常。某些情况下,你甚至会觉得0.5秒太少。如果Excel通过数组完成一个转换用时不到0.5秒,对普通人来说,那是稍微顿一下的功夫而已。而昨天,我写的那些运用了数组的汇总程序在处理80多个工作表300多条数据的时候,如果要加上最后的删除空白行,尚且用时不到0.4秒,如果去掉删除空白行的功能,那么总用时将只需要0.2秒不到。0.2秒是什么概念?那就几乎等于鼠标按下去,你觉得结果马上就出来了。这就是我想要的秒杀结果。。
在Excel VBA里使用数组,我上个星期下半段才开始研究。没人强迫我必须得这么做,但是我觉得这非常有趣。对高手来说,这根本不算什么,但对我来说我觉得这是个非常牛逼的效果。其实能用Excel的VBA把那些数据自动汇总出来已经很可以了,一两秒钟的运算时间其实也不算很多,但是,当我发现了数组可以让这个功能进化很多的时候,我兴奋不已。其实,做的时候我完全没料到数组居然可以这么高效,虽然我知道它的用时肯定要比一般的方法快很多,一开始我以为可以达到10倍以上,但实际上还没到那个程度,不过这已经很鼓舞人了。
还是学生,要去考试的时候,我还是没有很好的掌握数组,但现在我对那个东西算是有点感觉了。