在我的 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 等。