如何使用Power Query合并Excel多工作表不同非表格数据区域为单表
Excel多工作表零散数据区域按行合并操作方案
高效自动处理方案(VBA宏,适配21个工作表的批量场景)
无需手动逐个复制,运行一次代码即可自动完成合并:
- 打开目标Excel文件,按
Alt + F11调出VBA编辑器 - 在左侧「工程-VBAProject」面板右键点击你的工作簿名称,依次选择「插入」-「模块」
- 将下方代码粘贴到弹出的空白编辑窗口:
Sub 合并所有数据区域() Dim ws As Worksheet, sumWs As Worksheet Dim lastRow As Long, rng As Range ' 设定汇总工作表,这里默认是TOTAL,可根据你的实际表名修改 Set sumWs = ThisWorkbook.Worksheets("TOTAL") ' 设定粘贴起始行,31行之后就是第32行,可按需修改 lastRow = 32 ' 遍历所有工作表 For Each ws In ThisWorkbook.Worksheets ' 跳过汇总表本身,不需要处理 If ws.Name <> sumWs.Name Then ' 遍历当前工作表的所有已使用常量区域 For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants).Areas ' 复制数据到汇总表 rng.Copy sumWs.Cells(lastRow, 1) ' 更新下一次粘贴的起始行 lastRow = lastRow + rng.Rows.Count Next rng End If Next ws Application.CutCopyMode = False MsgBox "合并完成!共汇总到" & lastRow - 32 & "行数据" End Sub
- 按
F5运行代码,等待弹出完成提示即可
注意:如果你的数据里包含公式,可把代码里的
rng.Copy sumWs.Cells(lastRow, 1)替换为下面两行,实现仅粘贴值,避免格式和公式错乱:rng.Copy sumWs.Cells(lastRow, 1).PasteSpecial xlPasteValues
手动操作方案(适合临时小批量处理)
如果不想启用宏,也可以手动操作完成:
- 按你需要的顺序逐个打开对应工作表,从上到下依次选中每个独立的数据区域,按
Ctrl + C复制 - 切换到TOTAL汇总表,定位到当前已有数据的最后一行的下一个空行,按
Ctrl + V粘贴即可 - 所有区域粘贴完成后统一调整格式即可
内容的提问来源于stack exchange,提问作者Mishko
相关产品推荐
相关产品推荐

