我用 Excel 2003 的宏,把每周四小时的报表活儿压到了十分钟

办公桌上印满表格行的纸质表格纸,旁边老式计算器与电子表

刚参加工作那几年,我负责部门里几张周报和月报。说起来不复杂——把三个业务系统导出的 Excel、再加上邮件里同事发来的几份表,里面的数搬到一张汇总表里,做几个求和、算几个占比,排排版,存成文件发给领导。可真做起来,每次都得两个多小时,月底那张表更要折腾四个小时往上。最磨人的不是难,是它一点技术含量都没有,就是机械地搬、复制、粘贴,做的时候脑子是空的,做完却累得不行。

有回隔壁工位那位老哥看我周五下午又在吭哧吭哧对表,凑过来看了一眼,扔下一句:你这活儿,录个宏不就完了?我当时连宏是啥都模模糊糊,只当他是开玩笑。可他真给我演示了一遍——点开工具菜单里的宏,选录制新宏,然后像平常一样把数搬了一遍,停掉录制,再点一下那个宏,刚才那一串动作居然自己重放了一遍,两小时的事几十秒跑完。我当时眼睛都直了。

当时大家用的大多是 Excel 2003,没有后来那些一键处理的插件,也没有什么现成的抽取工具。VBA 宏几乎是普通上班族能亲手碰到的第一道自动化。手动填表的累,每个周五下午都来一遍:光标一格一格地跳,行数多了眼睛就花,一走神把数粘错格,又得从头对。那种重复到脑子放空、手上还在机械动的下午,坐办公室的都懂。

手工搬数还有个隐蔽的坑,是眼睛会骗人。第五百行那格你明明粘的是销售数,手一抖落到库存那列,自己还以为对了,等领导拿去汇报才被发现,回头改起来比重做还丢人。机器重放同一步,落点永远分毫不差,这点人真比不了。

后来我花周末把报表吃透

后来我花了一个周末,把这几张报表彻底吃透,才慢慢弄明白宏到底省了什么。报表这件事,最难的地方在于它每次都一样:同样的源文件、同样的列、同样的计算公式、同样的落点。人做这种活儿容易出错,因为重复到后面注意力就散了,行数多了还会看串行;可机器最不怕的就是确定性的重复,你让它做一千遍,它遍遍一个样。

我踩过的第一个坑:上来就录

我踩过的第一个坑,就是上来就录。第一次录完一跑,宏在中途卡住了。后来才懂,录制宏会把你当时的每一个动作都记下来,包括那些没用的——比如你录的时候顺手滚了一下鼠标、点错了一个格子又改回来、还切出去看了眼别的。这些废动作全被录进去了,宏再放的时候,就照着这些乱七八糟的步骤走,自然跑偏。所以正确的顺序是:先在手上把流程练到不用想就能做对,确认每一步都必要,再开始录;录完最好进 VBA 编辑器里扫一眼,把明显的多余行删掉。

还有个细节:录制时点相对引用,宏才认得从当前格子往右下走,不然它死死记着你录的那一个单元格,换个起点就全乱。

宏极度依赖一个前提

宏不是魔法,它只是把你教它的动作原样重放。这意味着它极度依赖一个前提:数据源和模板每次都得长一个样。有一回,做业务的同事好心优化了下模板,把两列调了顺序、加了个汇总行,我那宏第二天就全乱了——它还在往老位置塞数,可那个位置早不是原来的意思了。从那以后我学乖了:凡是交给宏的表,先把格式锁死,列名、顺序、起止行都固定下来,谁也别乱改;真要改,得连宏一起改。

公司电脑默认是禁用宏的,这事儿坑过我好几次。带宏的表发过来,双击打开,按钮全是灰的,点不动,我还以为是文件坏了。其实是 Office 出于安全考虑,怕宏病毒,默认不让跑。解决办法不难:打开文件时,顶部黄条点启用宏就行;要是经常用,可以把文件存成启用宏的工作簿,或者在信任中心把常用目录加进信任位置。不过也得提个醒,宏确实能执行代码,来历不明的表别随便启用,这是底线。

等我摸熟了宏,才发现它能干的事比报表多得多。每月把几十封邮件里的附件按项目名归到不同文件夹,可以录宏;把一堆文档里的表格抽出来拼成一张总表,也能用宏串起来;甚至给常用的操作绑个快捷键,左手一按就出结果。在没有那些现成抽取工具的年月里,VBA 宏就是普通上班族离自动化最近的一扇门——它不需要你是程序员,只要你能把一件事拆成第一步、第二步、第三步,机器就能替你一遍遍走下去。

有回月底赶上季度汇总,领导要的表比平时厚三倍,按老习惯我得请半天假专门弄。那回我直接把录好的宏一点,喝口水的工夫,三张分表的数就归到了一起,连格式都调好了。说真的,那一刻我第一次觉得周五下午是可以属于自己的,而不是被几张表预定掉的。

录成那第一回,我转头把宏甩给隔壁老哥看,他点一下,两小时变几十秒,啧了一声没多说。后来这招在部门里悄悄传开,财务小姑娘也来请教,我才知道原来被这种重复活儿折磨的人不止我一个。大家不是不想偷懒,是压根没往录个宏这点子上想。

那种周五下午最怕的,是领导探头问一句表怎么样了。你正对着第五百行数发呆,只能含糊说快了快了,其实离完事还远。录了宏之后,这种被盯着问的紧绷没了——表自己在跑,我端着杯子站旁边看它走,领导再来问,我直接把文件甩过去。活儿还是那活儿,但不再是悬在头顶的一件事。

宏也有天花板

当然,宏也有它的天花板。碰到数据源乱七八糟、步骤说不清道不明的活儿,硬录宏只会制造更多麻烦。这时候该做的不是写更复杂的宏,而是先把手头的流程理顺。工具从来是帮手,不是替身;把事想清楚,再让机器跑,顺序不能反。

有个误区得说清楚:很多人一听自动化,就觉得越复杂越厉害,非要把宏写成几页代码才甘心。其实多数报表只要一段干净利落的录制,再手动修几行就够了。把宏写得太花哨,反而是给自己埋新坑——你走了之后,同事看不懂,不敢改,最后又回到手工。好的宏,是隔壁人也能看懂、也敢接手的那个。

领导后来发现我周五下午不再闷头对表,反倒有空跟他聊下周打算,愣了一下,说你最近表交得挺准时。我没解释背后的宏,只笑了笑。有些效率,不用嚷嚷,成果自己会说话。

现在每个周五下午,报表自己在十分钟内跑完,我拿那点省下的时间泡杯茶,翻翻下周的打算。屏幕上光标还在闪,但那是宏在走,不是我。等它停下来的工夫,我这边的活儿,才算真成了我的。

相关推荐