Excel批量合并表格有四种方法:一、Power Query可自动合并同结构文件夹内工作簿;二、VBA宏支持自定义逻辑自动化合并;三、Kutools插件提供图形化一键操作;四、PowerShell预处理CSV再导入,适合大批量文件。

如果您需要将多个Excel工作簿中的数据整合到一个工作表中,但手动复制粘贴效率低下且易出错,则可能是由于缺乏系统化的批量处理流程。以下是实现Excel批量合并表格的多种方法:
一、使用Power Query合并工作簿
Power Query是Excel内置的数据获取与转换工具,适用于合并结构相似的多个Excel文件(.xlsx、.xls等),能自动识别文件夹内所有工作簿并堆叠数据。
1、打开Excel,点击【数据】选项卡,选择【获取数据】→【从文件】→【从文件夹】。
2、在弹出窗口中,浏览并选择存放所有待合并Excel文件的文件夹,点击【确定】。
3、在新出现的查询预览界面,勾选【合并和加载】旁边的下拉箭头,选择【合并和加载到…】。
4、在“合并”设置中,确认【Content】列为数据源,点击【确定】后,Power Query会自动提取各工作簿首张工作表内容。
5、在Power Query编辑器中,展开【Transform Sample File】列右侧的扩展按钮,取消勾选【Name】和【Extension】,仅保留数据列,点击【确定】。
6、点击左上角【关闭并上载】,结果将自动载入新工作表中。
二、使用VBA宏代码批量合并
VBA可完全自动化合并过程,支持自定义工作表名称、跳过标题行、适配不同列数等灵活逻辑,适合有重复操作需求的用户。
1、按【Alt + F11】打开VBA编辑器,右键【Normal】或当前工作簿名称,选择【插入】→【模块】。
2、在空白模块中粘贴以下代码(确保所有待合并文件处于同一文件夹且为.xlsx格式):
Sub MergeWorkbooks()
Dim Path$, Filename$, wb As Workbook
Path = "C:\YourFolder\" '将此处替换为实际文件夹路径,末尾保留反斜杠
Filename = Dir(Path & "*.xlsx")
Do While Filename ""
If Filename ThisWorkbook.Name Then
Set wb = Workbooks.Open(Path & Filename)
wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
wb.Close False
End If
Filename = Dir
Loop
End Sub
3、返回Excel,按【Alt + F8】,选择【MergeWorkbooks】,点击【运行】。
4、确保目标工作表(如Sheet1)为空或首行为标题,否则数据可能覆盖原有内容。
三、借助第三方插件Kutools for Excel
Kutools提供图形化界面的一键合并功能,无需编写代码或理解查询逻辑,特别适合不熟悉Power Query或VBA的用户。
1、安装Kutools for Excel插件并重启Excel,确保其功能区显示【Kutools】选项卡。
2、点击【Kutools】→【工作簿】→【合并工作簿】。
3、在向导界面中,点击【添加文件】按钮,选择全部需合并的Excel文件;也可点击【添加文件夹】直接导入整个目录下的.xlsx文件。
4、勾选【合并工作表】,在下方列表中确认各文件的指定工作表(默认为第一个工作表)均被选中。
5、设置【标题行】数量(如首行是列名则填1),勾选【跳过空工作表】,点击【下一步】。
6、选择合并结果存放位置:新建工作簿或当前工作簿的指定工作表,点击【完成】。
四、使用Windows PowerShell脚本预处理
PowerShell可在Excel未启动时快速合并CSV格式数据,再导入Excel,规避Excel进程卡顿问题,适合超大数量(数百个)文件的初步聚合。
1、将所有待合并Excel文件另存为CSV格式(文件 → 另存为 → CSV UTF-8格式)。
2、新建文本文件,输入以下命令(注意修改$folder路径):
$folder = "C:\YourCSVFolder"
$output = "C:\Merged\merged.csv"
Get-ChildItem $folder -Filter "*.csv" | ForEach-Object {
if ($_.Name -ne "merged.csv") {
if ($first) {
Get-Content $_.FullName | Select-Object -First 1 | Out-File $output -Encoding UTF8
$first = $false
}
Get-Content $_.FullName | Select-Object -Skip 1 | Out-File $output -Encoding UTF8 -Append
}
} -Begin {$first = $true}
3、将文件保存为merge.ps1,右键以【使用PowerShell运行】执行。
4、执行完成后,在Excel中通过【数据】→【从文本/CSV】导入生成的merged.csv文件。



















