位置:首页 > 综合教程 > Excel合并多个表格数据的公式设置方法

Excel合并多个表格数据的公式设置方法

时间:2026-07-11  |  作者:318050  |  阅读:0

把Excel里好几张表的数据合并到一块,其实动态数组公式就能搞定。

只要这几张表结构完全一致,VSTACK可以把它们按行纵向拼接起来。

举个实际例子,用VSTACK合并华东表和华南表,再搭配FILTER删掉预留区域里的空行。

适用场景:每月销售明细、门店流水、人员清单这类“表头统一、后续行数会持续新增”的数据。

当前操作软件:Microsoft Excel

软件版本:Microsoft 365,Excel 16.93

第一步:统一列顺序

先把所有待合并的表调整成完全一致的列顺序。

示例里左边放华东销售明细,右边放华南销售明细,两张表都按“日期、区域、商品、数量、金额”排列。

注意:这一步看上去简单,但容易翻车。表头对不齐,公式不会自动帮你匹配对应列,必须提前处理好。

第二步:手动输入汇总表头

找页面右侧的空白区域,手动输入汇总表的表头。

示例里把汇总区设在 M1:Q1 单元格,表头同样写成“日期、区域、商品、数量、金额”。

这样做的好处是:公式只会自动返回数据行,表头完全由你自己控制。

后续做筛选、排序或套用表格格式时,逻辑更清晰。

Excel合并多个表格数据的公式设置方法_wishdown.com

第三步:基础公式写法

点选汇总表的第一个数据单元格 M2,输入 =VSTACK(A2:E4,G2:K4)

A2:E4 是华东表的数据行范围,G2:K4 是华南表的数据行范围。

VSTACK 会按照你写的先后顺序,把两个区域的内容上下拼接起来。

Excel合并多个表格数据的公式设置方法_wishdown.com

第四步:动态扩展引用范围

如果后续源表还会继续新增记录,就别只引用当前已经填了内容的3行。

把引用范围预留得大一点,再用 FILTER 把多余的空行筛掉即可。

示例公式:=FILTER(VSTACK(A2:E20,G2:K20),CHOOSECOLS(VSTACK(A2:E20,G2:K20),1)<>"")

逻辑很简单:先合并 A2:E20 和 G2:K20 两个大区域,再只保留第一列“日期”不为空的行。

效果:日后新增数据,公式会自动带进来。

Excel合并多个表格数据的公式设置方法_wishdown.com

第五步:核对汇总结果

公式算出结果后,必须做的一件事就是核对:汇总区的总行数、总金额是不是和预期一致。

示例里华东有3行数据、华南有3行数据,合并完汇总区应该得到6行。

要是行数对不上,一般原因有两个:

  • 你选的源区域没把新增内容包进去
  • 筛选条件误把有效行排除了
Excel合并多个表格数据的公式设置方法_wishdown.com

公式语法拆开看

VSTACK 的语法是 =VSTACK(array1,[array2],...),作用是把多个数组或单元格区域按行向下追加拼接。

FILTER 的语法是 =FILTER(array,include,[if_empty]),用来按条件保留符合要求的行。

示例中 CHOOSECOLS(VSTACK(...),1) 提取出合并结果的第 1 列,配合 <>"" 判断这一列的内容不是空白。

参数在示例中的写法作用
array1A2:E20第一张表的数据区域,不包含表头。
array2G2:K20第二张表的数据区域,列数要和第一张表一致。
arrayVSTACK(A2:E20,G2:K20)准备筛选的合并结果。
includeCHOOSECOLS(...,1)<>""只保留第一列不为空的记录。
if_empty可省略,也可写成 "暂无数据"没有匹配记录时返回的提示。

版本兼容和常见错误

这组函数虽然方便,但有一个硬门槛——VSTACKFILTERCHOOSECOLS 都是近年新出的动态数组函数,只能在 Microsoft 365 版 Excel 中正常运行。

如果使用 WPS 或旧版 Excel,需要先确认是否支持。旧版 Excel 用不了的话,可以改用 Power Query 的“追加查询”功能,或者手动复制粘贴搭配表格引用来维护汇总表。

遇到没反应的情况怎么办?

  • #SPILL! 报错:通常是汇总区域下方有其他内容,挡住了动态数组的溢出结果。——清空 M2:Q20 这类目标区域后再重试。
  • #VALUE! 报错:重点检查所有待合并区域的列数是否一致,比如 A2:E20 是 5 列,第二张表也必须是 5 列。
  • #NAME 报错:多半是软件版本不识别函数名,先核对 Excel 版本,再考虑用 Power Query 替代方案。

扩展示例

这个公式方案还能继续扩展:

  • 合并三张表:直接把第三张表的区域写到 VSTACK 参数后面即可,例如 =VSTACK(A2:E20,G2:K20,A25:E40)
  • 只保留金额大于300的记录:把筛选条件改成对应第5列(金额列)大于300:=FILTER(VSTACK(A2:E20,G2:K20),CHOOSECOLS(VSTACK(A2:E20,G2:K20),5)>300)
  • 没有数据时显示提示:补全 FILTER 的第三个参数:=FILTER(VSTACK(A2:E20,G2:K20),CHOOSECOLS(VSTACK(A2:E20,G2:K20),1)<>"","暂无数据")

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多