將多個電子表格中的數值相加 (VBA)

將多個電子表格中的數值相加 (VBA)

在我的 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 功能,可以匯總數據並聚合數據,例如計數、不重複計數、求和、平均等。

相關內容