Excel VBA 之 多个工作簿内容汇总到一张表


Excel VBA 之 多个工作簿内容汇总到一张表

上一期我们讲了在同一个工作簿内,将多个工作表内容汇总至新表。今天接着讲一下将多个工作簿内的工作表(数量未知)汇总到一张总表。

例:文件夹下有若干个工作簿,每个工作簿内有若干张成绩表,每张表格式相同,现在要求将它们汇总至一张新表。

Excel VBA 之 多个工作簿内容汇总到一张表

Excel VBA 之 多个工作簿内容汇总到一张表

现在,我们打开总表,输入以下代码


<code>Sub test()
Application.ScreenUpdating = False
Dim mR%
Dim n%
Dim wbName
Dim wb
n = 2 '数据从第二行开始复制,第一行为表头
[2:65536].ClearContents '清空原内容

wbName = Dir(ThisWorkbook.Path & "\\*.xls*") '查找目录下所有Excel文件
While wbName <> ""
If wbName <> ThisWorkbook.Name Then '如果文件不是当前总表,则打开她
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & wbName
Set wb = Workbooks(wbName)
For Each sht In wb.Sheets '遍历原工作簿中的所有工作表
mR = sht.[A65536].End(xlUp).Row
sht.Range("B2:F" & mR).Copy ThisWorkbook.Sheets(1).Cells(n, 2) '数据复制到总表
n = n + mR - 1 '行号累加
Next
wb.Close False '不保存关闭原工作簿
Set wb = Nothing '释放内存
End If
wbName = Dir '查找下一个Excel文件
Wend

ThisWorkbook.Sheets(1).Activate '激活当前总表
Range("A2:F" & (n - 1)).Sort [F1], Order1:=xlDescending '按F列(总分)倒序排序(从大到小)

[A2] = 1
[A2].AutoFill Destination:=Range("A2:A" & (n - 1)), Type:=xlFillSeries '填充序号
Application.ScreenUpdating = True
End Sub/<code>

最后,我们看一下效果

Excel VBA 之 多个工作簿内容汇总到一张表

最终效果

大家点击下面链接可以查看我的其他文章哦!

。。。


喜欢的朋友记得点赞、转发、关注哦,大家如果在Excel中遇到问题都可以找我交流,也可以在评论区或私信告诉我你想看到的VBA办公教程,我将在下期分享给大家,以后不定期更新Excel VBA技巧!


分享到:


相關文章: