Sub CreateMasterSheet()
Application.ScreenUpdating = False
Dim wrk As Workbook
Dim sheet As Worksheet
Dim masterSheet As Worksheet
Dim rng As range
Set wrk = ActiveWorkbook
For Each sheet In wrk.Worksheets
If sheet.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Remove or rename this worksheet.", vbOKOnly + vbExclamation, "Error"
Exit Sub
End If
Next sheet
Set masterSheet = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.count))
masterSheet.Name = "Master"
For Each sheet In wrk.Worksheets
If sheet.Index = wrk.Worksheets.count Then
Exit For
End If
Set rng = sheet.range(sheet.cells(1, 1), sheet.cells(65536, 1).End(xlUp).Resize(, 256))
masterSheet.cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.count, rng.Columns.count).Value = rng.Value
Next sheet
masterSheet.Columns.AutoFit
Application.ScreenUpdating = True
End Sub
2 回答
由于您的数据位于相同的列中,因此我假设您真正需要做的就是将每个工作表复制粘贴到一个主工作表中 . 这个VBA功能我在网上找了一段时间(对原始创作者很抱歉,我希望我知道它是谁,所以我可以信任他) . 它将所有工作表组合成一个名为“Master”的工作表 . 节省了大量时间!我希望这有助于或让您接近您需要的地方 .
您没有提到您的Excel版本 . 在2003年和2010年,您可以使用Data,Consolidate执行此操作 . 有关此过程,请参阅您的版本的帮助 .