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技巧!


分享到:


相關文章: