推荐使用Power Query合并工作簿,适用于结构相似的多个Excel文件;其次可选VBA宏批量合并Sheet1,适合统一表名且首行为标题的场景;少量固定文件可用INDIRECT函数配合定义名称动态引用。

如果您需要将多个Excel文件中的数据整合到一个工作表中,可能是由于数据分散在不同文件中导致分析困难。以下是实现多文件合并的多种方法:
一、使用Power Query合并工作簿
Power Query是Excel内置的数据连接与转换工具,适用于结构相似的多个Excel文件(如均含相同列标题),可自动识别并追加所有匹配工作表的数据。
1、在Excel中点击【数据】选项卡,选择【获取数据】→【从文件】→【从文件夹】。
2、浏览并选择包含所有待合并Excel文件的文件夹,点击【确定】。
3、在导航窗口中,取消勾选【Content】和【Date modified】等非数据列,仅保留【Name】和【Content】两列。
4、右键点击【Content】列标题,选择【转换为表】,确认包含标题。
5、展开【Content】列右侧的展开按钮,勾选所有需导入的列,取消勾选【使用原始列名作为前缀】。
6、点击【关闭并上载】,数据将自动合并至新工作表中。
二、通过VBA宏批量合并Sheet1
该方法适用于所有Excel文件均以“Sheet1”为统一工作表名,且首行为列标题的情况。VBA脚本可跳过空文件,自动追加数据,不依赖Power Query环境。
1、按Alt + F11打开VBA编辑器,插入新模块:点击【插入】→【模块】。
2、粘贴以下代码:
Sub MergeExcelFiles()
Dim Path$, File$, Wb As Workbook, Ws As Worksheet, DestWs As Worksheet
Set DestWs = ThisWorkbook.Sheets(1)
Path = "C:\待合并文件\" '请替换为实际路径,末尾必须有反斜杠
File = Dir(Path & "*.xlsx")
Do While File ""
If Not File = ThisWorkbook.Name Then
Set Wb = Workbooks.Open(Path & File)
On Error Resume Next
Set Ws = Wb.Sheets("Sheet1")
If Not Ws Is Nothing Then
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
If Ws.UsedRange.Rows.Count > 1 Then
Ws.UsedRange.Offset(1).Copy
DestWs.Cells(DestWs.Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlValues
End If
End If
Wb.Close False
End If
File = Dir
Loop
Application.CutCopyMode = False
MsgBox "合并完成!"
3、修改代码中Path = "C:\待合并文件\"为您的实际文件夹路径。
4、按F5运行宏,所有符合命名规则的.xlsx文件中Sheet1的第二行起数据将追加至当前工作簿首张表。
三、利用Excel公式+定义名称动态引用
适用于少量固定文件(不超过20个)且各文件结构一致的场景。通过INDIRECT函数跨工作簿引用,配合定义名称规避重复路径输入,避免打开源文件即可汇总关键字段。
1、确保所有源Excel文件处于关闭状态,并保存在同一文件夹内,例如命名为data1.xlsx、data2.xlsx……
2、在目标工作表中,于A1单元格输入列标题(须与源文件首行完全一致)。
3、选中B2单元格,定义名称:点击【公式】→【定义名称】,名称填“SourcePath”,引用位置填:="C:\同一文件夹\"(含末尾反斜杠)。
4、在B2输入公式:=INDIRECT("'["&SourcePath&"data1.xlsx]Sheet1'!B2"),回车后拖拽填充至所需行列。
5、对data2.xlsx至dataN.xlsx,分别在后续行或列中重复步骤4,仅修改公式中文件名部分。
6、使用筛选或排序功能将各来源数据归并观察,手动调整顺序或去重。










