使用VBA,1分钟汇总几百个工作簿的数据,效率就是高(附代码)

昨天发了一个汇总工作簿数据的PowerQuery教程,有同学就反应,是旧版本的Excel用不了,也有同学反应是WPS,没有这功能,今天我们就来个通用的方法。如果你经常我们需要合并N多工作簿中的数据到一个工作表中,这文章不要错过,收藏下,以后直接就可以用了。

专栏
Excel 办公常用小技巧
作者:Excel小技巧
¥39.9
1,751人已购
查看

要汇总数据,其实方法是比较多的,但是各有优缺点,而用VBA来做,简单易行,任意版本的Excel都可以用(WPS的同学,请自行安装VBA插件)。

1、合并的源文件介绍:

一共包括了3个Excel工作簿文件,在每个工作簿中又有两个工作表,这些表格的结构是一样的,包括了商品名称,销售数量,销售金额等等;

原始数据

2、操作步骤

2.1 关闭刚才预览的三个Excel文件,并在同文件夹下,新建一个Excel文件,如图所示,汇总.xlsx就是刚才新建的

新建文件

2.2、打开汇总文件,在工作表标签sheet1上面点右键,选择查看代码(也可以按键盘上面的快捷键 Alt+F11,一样的功能)

编辑代码

2.3 粘贴代码,运行

按照下图的1 2 3 的顺序,搞定就可以了,点击3以后,一切都是自动的,程序会依次打开文件,汇总数据,大概3~5秒(若数据多,时间稍长,待屏幕不闪动了),就完成

代码执行

2.4 关闭代码窗口,看看是不是有数据了?

检查结果

2.5 若以后还想使用本工作簿,在另存的时候,记得要保存成 '启用宏的工作簿.xlsm'

附代码如下:

直接复制下面的的代码,就可以了

Sub 合并多个工作簿()Dim MyPath$, MyName$, sh As Worksheet, sht As Worksheet, m&Set sh = ActiveSheetMyPath = ThisWorkbook.Path & '\'MyName = Dir(MyPath & '*.*')Application.ScreenUpdating = FalseCells.ClearContentsDo While MyName <> ''If MyName <> ThisWorkbook.Name ThenWith GetObject(MyPath & MyName)For Each sht In .SheetsIf IsSheetEmpty = IsEmpty(sht.UsedRange) Thenm = m + 1If m = 1 Thensht.[a1].CurrentRegion.Copy sh.[a1]Elsesht.[a1].CurrentRegion.Copy sh.[a65536].End(xlUp).Offset(1)End IfEnd IfNext.Close FalseEnd WithEnd IfMyName = DirLoopApplication.ScreenUpdating = TrueEnd Sub
(0)

相关推荐