在我的 Excel 工作簿中,我有三個單獨的電子表格。電子表格的格式相同,代表不同類別(客車、卡車等)的計數值。我需要以以下方式組合電子表格,並使用組合資料建立新工作簿(CombinedCount.xlsx):
='客運'!B3+'重型卡車'!B3+'輕型卡車'!B3
有很多單元格需要加在一起,並且此程式碼將應用於大量格式完全相同的工作簿。有沒有辦法用一些Python程式碼來自動化這個過程?
答案1
您想使用 Python 執行此操作有什麼特殊原因嗎? Excel 可以透過以下 VBA 巨集自行完成大部分工作:
Sub CombineSheets()
'
' Add three identically-formatted sheets,
' putting the result into a fourth one, and then moving it to a new workbook.
'
Sheets(1).Copy After:=Sheets(3)
Sheets(4).Name = "Combined Counts"
Sheets(2).Select
Cells.Copy
Sheets(4).Select
Range("A1").Select
Selection.PasteSpecial Operation:=xlAdd
Sheets(3).Select
Cells.Copy
Sheets(4).Select
Selection.PasteSpecial Operation:=xlAdd
Sheets(4).Move
End Sub
這
- 製作第一張紙的完整副本,將其放置在第三張紙之後。新工作表隨後可以引用為
Sheets(4)
。如果呼叫第一個工作表Passenger
,則首先將呼叫新工作表Passenger (2)
。 - 重新命名新工作表
Combined Counts
。 - 複製第二張紙的全部內容,然後使用添加將其貼上到新紙上。 (您可以透過“貼上”→“選擇性貼上...”,然後從“操作”部分中選擇“新增”,以互動方式存取此功能。)然後對第三張紙重複此操作。第二張和第三張上的非數字資料(即文字)將被忽略。如果第一個工作表的給定單元格中有文本,則該文本將保留到結果中,即使其他工作表中的其中一個有數字。 (但這不應該是一個問題,因為你說這些工作表的格式是相同的。)
- 將新工作表與書籍分離,建立一個新工作簿。
然後,您可以儲存新工作簿並透過輸入類似的內容來關閉其視窗
Do
fName = Application.GetSaveAsFilename( _
FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
Loop Until fName <> False
ActiveWorkbook.SaveAs Filename:=fName
ActiveWindow.Close
之前End Sub
。或者您可以透過其他方式取得檔案名稱。
答案2
我將使用 Power Query 加載項來完成此任務。它可以從資料夾匯入所有或選定的文件,並建立一個組合每個文件中的資料的表(假設它們具有您所指示的標準佈局)。例如:
http://www.excelguru.ca/blog/2013/11/26/from-txt-files-to-bi-solution/
Power Query 還有一個 Group By 功能,可以匯總數據並聚合數據,例如計數、不重複計數、求和、平均等。