可采用三种方法批量合并多Excel工作簿:一、Power Query自动合并同文件夹内结构一致的文件;二、VBA宏精准导入指定工作表并追加数据;三、CONSOLIDATE函数配合INDIRECT动态引用外部文件数据。

如果您需要将多个Excel工作簿中的数据统一整理到一个工作表中,但手动复制粘贴效率低且易出错,则可能是由于缺乏批量处理机制。以下是实现多文件合并的几种实用方法:
一、使用Power Query自动合并工作簿
Power Query是Excel内置的数据连接与转换工具,可自动识别同一文件夹下所有Excel文件并合并其指定工作表内容,无需编写代码,适合结构一致的多表汇总。
1、确保所有待合并的Excel文件保存在同一个文件夹中,且各文件内目标工作表名称相同(如均命名为“数据”)。
2、在Excel中点击【数据】选项卡,选择【获取数据】→【从文件】→【从文件夹】。
3、在弹出窗口中浏览并选中存放Excel文件的文件夹,点击【确定】。
4、在导航器中勾选【Content】列右侧的【二进制】图标,点击【转换数据】进入Power Query编辑器。
5、在Power Query编辑器中,依次点击【转换】→【解析】→【Excel工作簿】,确认后展开【Data】列。
6、删除除目标数据列外的其他冗余列(如Name、Extension、Date accessed等),点击【关闭并上载】完成合并。
二、通过VBA宏批量导入指定工作表
VBA脚本可精准控制导入逻辑,支持自定义工作表名、跳过标题行、追加至指定位置等功能,适用于有特定格式要求或需重复执行的场景。
1、按Alt+F11打开VBA编辑器,在左侧工程资源管理器中右键点击当前工作簿名称,选择【插入】→【模块】。
2、在新模块窗口中粘贴以下代码段(以合并所有.xlsx文件中名为“销售明细”的工作表为例):
Sub MergeWorkbooks()
Dim Path As String, Filename As String
Dim Wb As Workbook, Ws As Worksheet
Dim TargetWs As Worksheet
Set TargetWs = ThisWorkbook.Sheets(1)
Path = ThisWorkbook.Path & "\"
Filename = Dir(Path & "*.xlsx")
Do While Filename ""
If Filename ThisWorkbook.Name Then
Set Wb = Workbooks.Open(Path & Filename)
On Error Resume Next
Set Ws = Wb.Sheets("销售明细")
If Not Ws Is Nothing Then
Ws.UsedRange.Offset(1, 0).Copy
TargetWs.Cells(TargetWs.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Wb.Close False
End If
Filename = Dir
Loop
Application.CutCopyMode = False
End Sub
3、返回Excel界面,按Alt+F8调出宏对话框,选中“MergeWorkbooks”,点击【运行】。
4、确认所有源文件已关闭,仅保留当前工作簿打开,避免权限冲突。
三、利用Excel 365/2021新增的CONSOLIDATE函数配合INDIRECT动态引用
该方法适用于固定数量且路径稳定的文件,通过公式实时拉取外部工作表数据,便于后续联动更新,但要求源文件保持打开状态或启用自动更新链接。
1、在目标工作表A1单元格输入首份文件路径,例如:C:\报表\202401.xlsx;B1输入第二份路径,依此类推。
2、在目标区域第一行输入字段标题(如“产品”、“销量”、“日期”),确保与各源表列顺序完全一致。
3、在A2单元格输入公式:=INDIRECT("'"&SUBSTITUTE($A$1,".xlsx",".xlsx]销售明细'!")&"A2"),回车后向右向下填充至覆盖全部字段和预期行数。
4、选中已填充区域,按Ctrl+C复制,右键选择【选择性粘贴】→【值】,断开外部链接依赖。
5、对B1、C1等其余路径单元格重复步骤3–4,将结果纵向堆叠至同一区域下方。


















