问题
上次介绍了一个vba实例:
Excel vba 实例(16) - 按指定字段分类批量提取内容
这个例子是把总表里面的数据根据单号批量提取相关内容后,分别保存成单独的文件。
有「拆」表格,自然就有「合并」表格,也就是上面实例(16)的逆操作
,那么今天的例子就来说说如何用vba遍历多个工作簿并提取内容到总表。
举例如下:
现在有两张格式一样但内容不同的表,设为表一和表二,如下图
其中表二里面有两个sheet。
我们需要把这两个表中的三个sheet按照单号这个字段,统一提取内容到一个表格当中去,效果如下图:
思路
遍历文件夹里面所有的excel文件,如果你里面有多个sheet,每个sheet也都遍历一遍,然后单号以及其他内容所在的单元格依次复制到总表当中即可。
核心代码如下:
While X <= UBound(FileOpen) '遍历所有的excel文件
Set wb = Workbooks.Open(FileOpen(X)) '打开工作簿
With ThisWorkbook.Sheets("sheet1") '操作当前文件下的sheet1表
For Each sht In wb.Sheets '遍历目标工作簿里的工作表
Do While sht.Range("A" & hang) <> "" '逐行提取内容
sht.Range("B2").Copy
.Range("A" & flag).PasteSpecial xlPasteValues
sht.Range("A" & hang & ":F" & hang).Copy .Range("B" & flag)
hang = hang + 1
flag = flag + 1
Loop
hang = 5
Next
wb.Close False '依次关闭目标工作簿
End With
X = X + 1
Wend
End Sub
效果演示
如果需要源文件的话,后台回复「遍历提取」即可。
需要说明一下:实例的代码只是针对根据上面表格的字段设计的,如果你的字段数量不同,可能会出现错误。
据了解,做销售、零售、贸易等行业会用到销售单,订货单,采购单等表格,根据业务的情况会有上面的一些统计需求,这两个实例就是在帮多个小伙伴解决问题的时候做的,用vba(16)、(17)两个实例可以很方便快捷的实现效果。
如果还有其他需要定制化的功能,也可以联系我。
其他VBA实例,可以在公号里「精华整理」-「VBA实例」进行查看。
欢迎交流!