VBA如何执行一次性Vlookup带入新帐本会科
网志图文版:
http://www.b88104069.com/archives/4251
VLOOKUP函数是Excel两大妙用绝招之一,可是在资料量大的时候,让Excel去跑VLOOKUP,
常常老牛拖车,右下角那个计算百分比极其缓慢在上升。依照个人实务经验,资料超过一
万笔,Excel就吃不下去了。其实,如果只算那么一次, 大家也可以理解,资料量太大了
嘛,但偏偏,Excel先天设计是全面重算,所有正开启中的活页簿、所有工作表、每个储
存格,举凡有带到计算公式,Excel都会认真算,一个不放过!可想而知,很多时候我们
只想算算旁边那个简单加减乘除,Excel却走火入魔,再算一次那个算了N次的好几万笔
VLOOKUP。相信实务上有过经验的人,都知道那个春节高速塞车一样XX。以下,介绍如何
以VBA一劳永逸,轻松执行一次性VLOOKUP!
一、2015年的传票,当时还是老系统老会科,可能因管理分析需要,必须拿出来和当前作
比较。
二、2016年开始已经新ERP上线,当时留有导入新系统的会科更新对照表。
三、为了方便作跨年度比较,必须把15年传票的旧会科,套上新系统会科。第一个想到的
“=VLOOKUP($ B2 , ' 2 ' ! $A:$D,3,0)”,这里精心设计了固定参照“$”,方便
直接拖曳复制公式。
四、如同文章一开始所述,像这样的VLOOKUP,如果资料有上万笔以上,Excel将会“无言
的抗议”,不过在“公式”页签中的计算群组,可以设定“计算选项”:默认是“自动”
,表示每次变更数值、公式、名称即会重算,“手动”是自己决定何时“立即计算”储存
格公式,但这不代表原有的公式不会再进行计算(Excel本身很难判断哪些不该算,所以
干脆全部都算),另外还有一个“计算工作表”,意思是仅计算当前工作表。有了这选项
虽然不错,但却无法真正解决此范例所遇到的问题。
五、设计VBA程式,首先得到目前活动范围有多少水平列(变量“R”),设置第“2”到
第“R”的循环,将Excel函数公式带到VBA程式里。
六、执行宏“VBA_Vlookup”,得到和VLOOKUP函数一样的效果,仔细看,储存格并没有
公式,Excel再怎么“自动重算”,也不会算到这一块。
七、Excel可以“$”快速复制函数公式,其实只要熟悉VBA程式,复制贴上也是很快的。
八、成功以VBA得到两行的VLOOKUP结果,程式码不会太难,建议读者可以刷看看,和第三
步骤的传统VLOOKUP方式来个超级比一比。
不想Excel一直在重复没有问题的公式,有个最简单的解决办法,第一次函数计算完来个
复制值贴上,等于是大绝招,就算怕之后忘了怎么算的,也可以在第一格或最后一格保留
公式,如此既不会造成Excel负担,又方便有需要时再整批拉公式。
话说回来,如果能够身怀VBA绝技,像这里的范例小露身手一番,当然是最好的!赞赞小
屋预计12月开设VBA实体教室课程,欢迎大家有时间有兴趣,来学几手上乘VBA武功!
延伸阅读:
Excel如何以多层级排序搭配VLOOKUP评价存货
http://www.b88104069.com/archives/4250
Excel如何以Hlookup整理应付帐款
http://www.b88104069.com/archives/4135
Excel如何将字段合并进行vlookup比对
http://www.b88104069.com/archives/4089