问题需求

来自公号粉丝,有1000多条数据,如下图,需要按照客户名称拆分成单独的工作簿(workbook),代码别人已经写好了,但是一运行发现,需要运行的时间太长了(足足有6分来钟)。Ta咨询我能否有方法可以提高效率?

打开网易新闻 查看精彩图片

解决办法

大致看了下源代码,几十行,如下图,瞬间就感觉这个case有点大,一行行看、改代码可能会比较费时。

打开网易新闻 查看精彩图片

当然,通过优化算法,肯定会有方法修改其中的代码,提升运算效率。但是这个过程会比较枯燥、费时。

其实完全可以试试加入下面的这两条代码:

Application.ScreenUpdating = False(程序开始)
Application.ScreenUpdating = True(程序结束)

这两条代码用处是不显示代码的运行过程,只显示最终的结果。说的简单一些,就是只看结果,具体过程计算机后台处理即可。

两行代码分别是用在程序开始和结束的时候,看看结果:

以上面这个为例,永恒君缩减为100行,未加入代码的运行时间为:14.8s

打开网易新闻 查看精彩图片

加入之后为:9.8s

打开网易新闻 查看精彩图片

缩短了约30%多的时间。

实际上,这两行代码在任何一个vba程序中都可以使用,尤其是数据量比较大的时候,效果会更加的明显。