1.2 Excel VBA能做什么
在学习之前,一起看一看Excel VBA能够帮助我们做什么。
1.2.1 处理固定格式表格
财务人员和审计人员天天和Excel打交道。对于财务人员来说可能每周、每月甚至每天都要制作固定格式的表格。这样的需求其实是最适合用Excel VBA来解决的,可能你要辛辛苦苦做几十分钟的表格,计算机只用不到1秒的时间就能做完。
案例1:
2018年5月底,公司的IT部同事找到笔者帮忙,他们被安排要把事务所在2017年出具的年报报表按照财政部发的格式(见图1-2-1)重新填写并提交给总部。这项工作就他们三四个人做,而且只剩下3天时间,一个年报中包括那么多报告,每个报表有12张表,可能他们加班加点也很难干完。笔者花了一个白天加一个晚上的时间做了一个小工具,结果不到1秒就完成了一个报表,加上他们复核的时间,大约3分钟就可以处理完一家公司的数据。
图1-2-1
案例2:
2018年12月,笔者接到客户某有限公司做一个报表自动化的小程序的任务。他们的财务人员每个季度都要做季报,还要填写报表附注。这个工作量很大,他们需要加几天班才能完成。由于他们的附注格式都是固定的,所以非常适合用Excel VBA将填写的过程自动化。因此笔者编写了从科目余额表中取数自动填写附注的工具,能够大大节约他们的时间。
1.2.2 批量操作
编写VBA代码可以方便快捷地完成重复,烦琐的批量操作任务,从而显著提高工作效率。
案例3:
2017年做年报时遇到一家金融企业,笔者做的科目需要核算该企业发行的理财产品的计提的利息,公司账上有约200个浮动利率的理财产品。
每个理财产品就是一个工作簿,如图1-2-2所示。投资者因投资本金不同,得到的利率不同。要是按照正常操作,那就需要对200个这样的工作簿计算出计息天数,并计算出应计提的利息,然后把理财产品利息汇总。在整个过程中只要中间某部分计算错误,那么就要重新来一次。
图1-2-2
于是笔者在现场花了一个晚上的时间写了一段VBA代码,一键就可以完成自动打开工作簿、计算每个投资人利息并求和、关闭工作簿、循环200个工作簿的计算过程。对于这200个理财产品的数据,只用大概10多秒时间就可以生成出如图1-2-3所示的表格,接下来只需要求和就可以完成任务。而且,做下一个年报的同事还可以继续使用该工具,利人利己。
图1-2-3
1.2.3 大量计算
如果遇到大量计算,人工操作一次需要几个小时的时候,你就要考虑用编程来完成了。
案例4:
2017年,另外一组同事做一个资产证券化项目,监管机构需要这个项目的现金流预测值来评估项目风险。同事要根据条件概率分布来计算每个季度回收的现金流,并以此为基础计算下一个季度的现金流,需要这样迭代几次。
此项目的条件分布如图1-2-4所示。
图1-2-4
项目的现金流计算模型如图1-2-5所示。
图1-2-5
最开始他们用手工计算,计算一次就需要3到4个小时。而且这中间有几个变量,每修改一次变量就需要重新计算,简直被折磨得死去活来。最后笔者帮助他们写了VBA代码工具,用递归函数只需要10多秒的计算时间,就可以完成人工3到4个小时的计算量,而且可以随意修改变量。