可采用三种方法跨工作簿合并数据:一、power query自动合并,要求文件结构一致且关闭状态;二、vba宏批量复制,灵活提取指定工作表数据;三、excel 365/2021函数动态汇总,需源文件打开且路径规范。

如果您需要将多个Excel工作簿中的数据整合到一个表格中,可能是为了统一分析或生成报告。以下是实现跨工作簿合并汇总的具体操作方法:
一、使用Power Query自动合并工作簿
Power Query是Excel内置的数据连接与转换工具,适用于结构相似的多个Excel文件(如各工作簿中均有同名工作表且列标题一致),可一键导入并追加所有数据。
1、打开一个新的Excel工作簿,切换到【数据】选项卡,点击【获取数据】→【从文件】→【从文件夹】。
2、在弹出窗口中,浏览并选择存放所有待合并Excel文件的文件夹,点击【确定】。
3、在“文件夹内容”预览界面,勾选【仅显示Excel文件】,点击【转换数据】进入Power Query编辑器。
4、在查询设置窗格中,删除除【Content】列外的所有列;右键【Content】列,选择【转换为表】,勾选【我的表有标题】。
5、选中第一列(通常为“Column1”),点击【转换】→【展开图标】→【展开到新行】,再点击【主页】→【追加查询】→【将查询追加为新查询】,确保所有文件数据已纵向堆叠。
6、点击【关闭并上载】,数据将自动加载至当前工作表中,注意:所有原始文件必须处于关闭状态,且格式统一(.xlsx/.xls)。
二、通过VBA宏批量复制工作表数据
VBA脚本可绕过Power Query限制,在不依赖文件结构完全一致的前提下,按指定工作表名称或索引提取各工作簿首张表数据,并粘贴至目标工作表末尾。
1、新建Excel文件,按【Alt+F11】打开VBA编辑器,右键【ThisWorkbook】→【插入】→【模块】。
2、在模块空白处粘贴以下代码(请将“Sheet1”替换为实际要读取的工作表名):
Sub 合并工作簿()
Dim MyPath$, MyFile$, Wb As Workbook, Ws As Worksheet
MyPath = "C:\待合并文件\"
MyFile = Dir(MyPath & "*.xlsx")
Do While MyFile ""
If MyFile ThisWorkbook.Name Then
Set Wb = Workbooks.Open(MyPath & MyFile)
Set Ws = Wb.Worksheets("Sheet1")
Ws.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Wb.Close False
End If
MyFile = Dir
Loop
End Sub
3、修改代码中“MyPath”变量值为实际文件夹路径,确保末尾含反斜杠“\”。
4、返回Excel界面,按【Alt+F8】调出宏列表,选中“合并工作簿”,点击【运行】。
5、运行前需启用宏功能(文件→选项→信任中心→宏设置→启用所有宏),且目标工作表第1行不能为空(否则粘贴位置偏移)。
三、借助Excel 365/2021新增函数动态合并
在支持最新函数的版本中,可利用INDIRECT结合TEXTJOIN构建跨工作簿引用字符串,再配合FILTER、VSTACK等函数实现免手动刷新的动态汇总。
1、在目标工作表A1单元格输入公式:
=LET(files,TEXTJOIN(",",,FILES("C:\待合并文件\*.xlsx")),
names,SUBSTITUTE(SUBSTITUTE(files,"C:\待合并文件\",""),".xlsx",""),
VSTACK(A1#,""))
2、在B1单元格输入:
=FILTERXML(""&SUBSTITUTE(INDEX(TEXTSPLIT(files,",",,1),SEQUENCE(ROWS(TEXTSPLIT(files,",",,1)))), "\", "")&"
3、在C1单元格起始区域输入:
=LET(path,"C:\待合并文件\",wb,INDEX(TEXTSPLIT(B1#,".",,1),ROW(A1)),
ref,path&wb&".xlsx!Sheet1!A1:Z1000",
IFERROR(INDIRECT(ref),""))
4、该方法要求所有源文件保持打开状态,且路径中不能含中文或空格;若出现#REF!错误,说明某文件未打开或工作表名不匹配。










