将多个电子表格中的值相加(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 功能,可以汇总数据并进行聚合,例如 Count、Count Distinct、Sum、Average 等。

相关内容