By Mejias
前言:
因为自己最近接手了很多公司的数据分析的工作,其中由许多的重复性的操作,自己都想要通过编写VBA代码简化工作。之前陆续编写过一些Python代码和SQL代码,后续将和大家分享。今天自己做了一个在工作中VBA自动运用excel 的Aplication函数的程序。介绍如下。
业务需求:
图中红色圈选为产品单号,需要根据这个分别匹配另一张表的信息到紫色框的六列,另一张表对应的信息如下面所示。
我们首先会想到的是使用Vlookup函数,这也非常方便。但是因为这个还有另外六张表针对不同的源地由同样的操作,实用Vlookup手动操作便显得非常繁琐。
解决方法:
由于这些操作是在Excel里进行的,编写Python程序用pandas自然可以很简单的实现,但是杀鸡何必用宰牛刀呢:)。于是笔者直接简单的使用VBA自动化。自己手写VBA当然可以,但是还是要费一些脑细胞的,于是笔者的思路是自己手动做一遍整个流程,使用宏录制的方法,让VBA自己取编写代码,最后再手动完善。
首先,我们把要匹配的图都放在一个文本簿里。对两张表格命名好。
然后,打开开发工具,点击录制宏。
接着,输入自定义的宏名。点击确定。
当宏组的第一个控件显示为“停止录制时”,宏就已经开始录制了。然后我们可以自己手动操作一遍,让宏自动东记录工作流程。
对所需要的六列分别进行Vlookup。双击单元格左下角,自动匹配所有行。
完成工作的操作后点击“停止录制”按钮。宏旧录制好了。
接下来我们需要手动检查和完善以下代码。
选择Visual Basic编辑器,左键单击进入代码页面。
如下图,代码的注释里会有刚才我们起的自定义的宏名
观察代码,会发现代码有一个地方不足,那就是这里自动下拉到的是当前工作需要的行数,当后续工作行数增多或减少时,会出现程序未i东下来拉到底,或者程序下拉过度出现很多的N/A。
于是这里我们手动改一下。
首先,命名一个integer变量 a。
然后通过Inputbox让程序再运行时让我们输入需要运行到的行数。
最后将原来代码里的I602的行数字全部替代成字符连接符号“&”加上变量a的形式。&a
代码到这里就完成了。
为了方便我们还可以插入文本框指定到这个宏,这样运行宏的时候就只需要双击表格里的文本框即可。
今天对工作流程里,Vlookup程序的自动匹配就分享到这里了。欢饮有兴趣的朋友留言和交流:)。