汇总多个工作薄中多个工作表,仅需1分钟完成,让你不再加班_表名

大家好,今天跟大家分享的是如何汇总多个工作薄中多个工作表, 相信大家在处理月末的数据时候,经常会遇到需要汇总各个分公司的数据,而这些数据分别存放在不同的工作薄中的不同工作表中间,如果我们手动进行操作的话,也是可以滴,但是呢效率非常低,我们并不推荐哦!


现在和大家介绍使用VBA代码瞬间完成批量汇总多少工作薄下多个工作表的操作,请不要眨眼,一起来看看动画是如何来完成这个操作的。如下所示:

汇总多个工作薄中多个工作表,仅需1分钟完成,让你不再加班_sed_02


看了动画是不是发现批量汇总是如此之简单,其实代码两行,就可以批量完成我们重复性的工作。完成后的结果如下所示,本例是汇总了2个工作薄中的2个工作表,也就是本例中的4个工作表。

汇总多个工作薄中多个工作表,仅需1分钟完成,让你不再加班_表名_03


需要注意的是strShtName = Split(strBookName, ".xls")(0) & "-" & sht.Name,这句代码的意思新增加的工作表名字是以旧的工作薄的名字加上”-“和工作表的名字组成。


当然代码可以扩展一下,汇总我们需要汇总的数据,比如说我们需要汇总指定关键字的工作薄或者指定关键字的工作表的数据,来做一个数据的处理工作。只需将strKey1 = "": strKey2 = ""这个两个关键字替换一下即可。


附上源代码,如下图所示:

汇总多个工作薄中多个工作表,仅需1分钟完成,让你不再加班_表名_04


怎么样,小伙伴们,有没看懂这个代码的原理呢?有需要源代码的可以私信我“Excel教案”,谢谢支持!

Sub Excel教案()
Dim strPath$, strBookName$, strShtName$, k&, sht As Worksheet, shtActive As Worksheet
On Error Resume Next
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then strPath = .SelectedItems(1) Else: Exit Sub
End With
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strKey1 = "": strKey2 = ""
Set shtActive = ActiveSheet
strBookName = Dir(strPath & "*.xls*")
Application.ScreenUpdating = False: Application.DisplayAlerts = False
Do While strBookName <> ""
If InStr(1, strBookName, strKey1, vbTextCompare) Then
With GetObject(strPath & strBookName)
For Each sht In .Worksheets
If InStr(1, sht.Name, strKey2, vbTextCompare) Then
If Application.CountIf(sht.UsedRange, "<>") Then
strShtName = Split(strBookName, ".xls")(0) & "-" & sht.Name
ThisWorkbook.Sheets(strShtName).Delete
sht.Copy after:=ThisWorkbook.Worksheets(Sheets.Count)
k = k + 1
ActiveSheet.Name = strShtName
End If
End If
Next
.Close False
End With
End If
strBookName = Dir
Loop
shtActive.Select
Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub

如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

我是Excel教案,关注我持续分享更多的Excel技巧!

汇总多个工作薄中多个工作表,仅需1分钟完成,让你不再加班_表名_05

我是Excel教案,关注我持续分享更多的Excel技巧!