在中,你可以使用VBA(Visual Basic for Applications)來匯總多個工作簿中指定名稱的工作表(Sheet)的數據。以下是一個簡單的VBA示例。
Sub?合并多個工作簿中的不同工作表()
????Dim?FolderPath?As?String
????Dim?Filename?As?String
????Dim?SheetName?As?String
????Dim?wb?As?Workbook
????Dim?ws?As?Worksheet
????Dim?SummaryWs?As?Worksheet
????Dim?lastRow?As?Long
????Dim?wbPath?As?String
????
????'?設置包含工作簿的文件夾路徑
????FolderPath?=?"C:\Users\Lenovo\Desktop\王芨22年\"?'?請替換為你的文件夾路徑
????'?設置要合并的工作表名稱
????SheetName?=?"生豬出場導入模版"?'?請替換為你的工作表名稱
????
????'?創建一個新的工作表用于匯總數據
????Set?SummaryWs?=?ThisWorkbook.Worksheets.Add
????SummaryWs.Name?=?"合并數據"
????
????'?獲取文件夾中的第一個Excel文件
????Filename?=?Dir(FolderPath?&?"*.xls*")
????
????'?循環遍歷文件夾中的所有Excel文件
????Do?While?Filename?<>?""
????????'?構建完整的文件路徑
????????wbPath?=?FolderPath?&?Filename
????????'?打開工作簿
????????Set?wb?=?Workbooks.Open(wbPath)
????????
????????'?檢查工作簿中是否有指定名稱的工作表
????????On?Error?Resume?Next
????????Set?ws?=?wb.Sheets(SheetName)
????????On?Error?GoTo?0
????????If?Not?ws?Is?Nothing?Then
????????????'?找到匯總工作表的最后一行
????????????lastRow?=?SummaryWs.Cells(SummaryWs.Rows.Count,?1).End(xlUp).Row
????????????'?將數據復制到匯總工作表
????????????ws.UsedRange.Copy?SummaryWs.Cells(lastRow?+?1,?2)
????????End?If
????????'?關閉工作簿,不保存更改
????????wb.Close?SaveChanges:=False
????????Set?ws?=?Nothing
????????'?獲取下一個文件名
????????Filename?=?Dir()
????Loop
????
????'?釋放對象變量
????Set?SummaryWs?=?Nothing
????Set?ws?=?Nothing
????Set?wb?=?Nothing
End?Sub
使用這段前,請確保你的Excel啟用了宏,并且你了解如何運行VBA代碼。你可以在Excel中按Alt + F11打開VBA編輯器,插入一個新的模塊(在“插入”菜單中選擇“模塊”),然后將上述代碼粘貼進去。之后,你可以通過運行這個宏來執行數據合并操作。
請注意以下幾點:
1、你需要將FolderPath變量的值替換為你存放工作簿的實際文件夾路徑。
2、你需要將SheetName變量的值替換為你想要合并的工作表的實際名稱。
3、這段代碼會遍歷指定文件夾中的所有Excel文件(xls和xlsx格式),并嘗試打開每個文件以合并指定的工作表。
4、如果工作表不存在,代碼會繼續處理下一個文件,不會報錯。
5、合并完成后,代碼會關閉每個工作簿,不保存任何更改。
請根據你的實際需求調整代碼中的路徑和工作表名稱。