Excel怎么把多个工作表合并到一个?四种常用方法实操对比
月底汇总时,把表合并很多人会收到一份工作簿,多个对比里面按部门、工作个种按门店或按月份拆成了十几个工作表,常用结构完全一样,实操只是把表合并数据不同。要把它们并到一张表里再做透视,多个对比手工复制粘贴既慢又容易漏行。工作个种本文按数据量大小和版本差异,常用给出几种可落地的实操做法,并说明每种方法的把表合并适用边界和常见坑。
先明确一个前提:所谓"合并",多个对比通常指把多个工作表中结构相同的工作个种明细行纵向堆叠到一张表里。如果各表的常用列顺序、列名不一致,实操或者存在合并单元格、多行表头,建议先统一格式再合并,否则后面清洗的成本会远高于合并本身。
方法一:Power Query,适合列结构一致的批量合并
Excel 2016 及以上版本(含 Microsoft 365)自带 Power Query,是目前最稳妥的方案,数据量大也不容易卡死。操作路径:把光标放在任意一个工作表的数据区域内,依次点击"数据"选项卡 →"获取数据"→"来自文件"→"来自工作簿",选择当前这个文件本身。
在弹出的导航器里,勾选需要合并的工作表,注意不要勾选汇总页或说明页,点击"转换数据"进入编辑器。此时每个表会成为一个查询,接着在左侧查询列表里选中其中一个,右键选择"引用",或直接新建一个空查询,用公式 = Table.Combine({ 表1, 表2, 表3}) 把需要的表拼起来,表名以编辑器里实际显示的名称为准。
如果工作表数量很多,逐一点选很麻烦,可以在编辑器里筛选"Kind"列等于 Sheet 的行,再删掉不需要的页,然后点"将第一行用作标题"并展开数据列。完成后点击"关闭并上载",结果会落到一张新工作表。以后源数据更新,只要在结果表上右键"刷新"即可,不用重做一遍。
需要留意的是:Power Query 合并时按列名匹配,而不是按位置。如果某张表的表头写成"金额(元)"而其他表写"金额",这一列就会被拆成两列。合并前统一表头,是省事的关键一步。
方法二:VSTACK 函数,适合版本较新、数据量中等的场景
Microsoft 365 和 Excel 2021 之后提供了动态数组函数,合并变得非常直接。新建一张空白表,在 A1 输入 =VSTACK(一月!A2:D100, 二月!A2:D100, 三月!A2:D100),回车后结果会自动溢出到下方区域,一次性把三张表的明细堆在一起。
如果各表行数会持续增长,可以把区域写大一些,比如统一到第 5000 行,多余的空行用 FILTER 过滤掉,或者用 =VSTACK(表1, 表2) 配合整列引用。整列引用虽然写法简单,但会拖慢计算速度,数据量大时建议限定具体区间。
这个方法的优点是结果实时联动,源表改一个数字,合并表立刻变化;缺点是结果区域不能随意插入行或删除单元格,否则会报"溢出"错误。需要固定成静态数据时,可以复制结果区域,再用"选择性粘贴 → 数值"覆盖一次。
方法三:复制粘贴与合并计算,适合一次性小批量
只有三五个工作表、几千行以内时,最朴素的办法反而最快:在第一张表的数据下方留出空行,切到第二张表,选中数据区域(不含表头)复制,回到汇总表,用"选择性粘贴 → 数值"贴到末尾,依次重复。贴完后用"数据 → 删除重复值"或辅助列检查一遍行数是否对得上。
如果各表数据在相同位置、需要做的是加总而非堆叠,可以用"数据 → 合并计算",函数选"求和",逐个添加引用位置。注意这个功能是按位置或按最左列匹配的,表头不一致时结果会错位,用之前先核对一遍。
另外,WPS 表格等常见办公软件也有类似功能,入口名称可能略有差异,具体以你所用软件的当前界面为准。
方法四:VBA 宏,适合固定模板的重复性任务
如果每周都要合并同一批工作表,可以录制或编写一段简单宏:遍历 ThisWorkbook 里的每个工作表,把除表头外的数据区复制到汇总表下一空行。录制宏的路径是"视图 → 宏 → 录制宏",手工操作一遍再停止录制,就能得到基础代码,之后按需修改工作表名称判断条件。
使用宏之前务必先另存一份备份,并确认文件保存为 .xlsm 格式,否则代码会丢失。企业环境若禁用了宏,此方法不可用,建议改用 Power Query。
合并前后要核对的三件事
选哪种方法,取决于你的 Excel 版本、数据量和是否需要反复更新:一次性小批量用复制粘贴,需要定期刷新用 Power Query,版本较新且想快速出结果用 VSTACK,固定模板的重复劳动再考虑宏。动手前先备份原文件,合并后抽样比对几行原始数据,基本就能避免大多数返工。