夜雨聆风学习资料网

ARTICLE · 1226715

Excel多个工作表怎么合并成一张表?VSTACK函数教程(含WPS用法)

Excel多个工作表怎么合并成一张表?VSTACK函数教程(含WPS用法)

每家门店交一张明细表,列名都一样,做总表时却还在逐张复制、找最后一行、往下粘贴。分表有了修改,又得回头核对一遍。

这种“把几张明细接到一起”的需求,可以试试VSTACK函数。它把第一个区域放在上面,第二个区域接在下面,返回一组纵向排列的数据。原来的分表保留,汇总结果放在另一张工作表里。

今天用两家门店的虚构数据,做一张5条记录的总表。先讲怎样拼起来,再讲列顺序、重复表头和新增记录。本文只处理同一个工作簿里的普通桌面工作表,不涉及跨文件、网页协作或多维表格。

一、先确认版本:能用FILTER,不代表能用VSTACK

Microsoft Excel可使用支持VSTACK的Microsoft 365或Excel 2024。普通Excel 2021、2019、2016不能直接使用这条新函数。昨天讲过FILTER,如果你用的是Excel 2021,可能能运行昨天的公式,却无法运行今天这一条,这并不矛盾。

WPS表格需要当前桌面版本同时支持VSTACK和动态数组。动态数组表示:在左上角输入一次公式,结果自动展开到相邻的多行多列。不同版本、不同产品的支持情况可能不同,不把桌面表格的用法直接套到金山文档网页端或多维表格。

如果输入后出现无法识别函数的提示,先核对拼写、软件版本与功能,不靠反复按Ctrl+Shift+Enter解决。本篇按“单格输入、回车展开”演示。没有该功能的版本,可以先用文末的替代方法完成同样的明细整理,不必强行照抄。

二、准备两张分表:列的含义和顺序都要一致

在同一个工作簿中新建三张工作表,分别命名为“一店”“二店”“汇总”。两张门店表的A1:C1都写“订单号”“商品”“数量”,并保持这个顺序。以下订单号、商品和数量全部为虚构练习数据。

“一店”的第2至4行依次填写:S101/笔记本/3,S102/签字笔/5,S103/文件夹/2;“二店”的第2至3行依次填写:S201/签字笔/4,S202/胶带/6。数量按数值输入,不在数字后面加“件”等文字。

在“汇总”的A1:C1手工写一遍相同表头,把下面的A2:C10留空作为结果区。这次只选择分表的明细,不选择第1行表头,也不带上“合计”行、备注或额外空白行。先把范围选准确,后面才能看清每一条数据来自哪里。

三、在汇总表的A2,只写这一条公式

第1步:切换到“汇总”,单击A2。输入下面的完整公式,再按回车。公式里的单引号、叹号、冒号和逗号均使用英文半角符号。

=VSTACK('一店'!A2:C4,'二店'!A2:C3)

第2步:查看A2:C6,应该依次出现S101、S102、S103、S201、S202,共5条完整记录。前3条来自一店,后2条来自二店。签字笔会出现两条,因为它们是不同订单;VSTACK不会自动合并数量,也不会自动删除重复记录。

公式里,“一店”后面的A2:C4是第一个拼接区域,“二店”后面的A2:C3是第二个。先写哪个区域,哪个区域的记录就在前面。这里特意逐张表写出引用,方便核对,不使用把一段工作表标签一次全选的写法。

第3步:核对数量是否依次为3、5、2、4、6。这5个数合计20,可以作为检查有没有漏行或多行的辅助,但公式返回的是5条明细,不是一个求和结果。如果你的目标是“每种商品只保留一行并合计数量”,那是下一步的分组统计,不能把拼接和求和当成同一个操作。

只在左上角A2修改公式,不向下拖动,也不在展开出来的其他格子里逐个填写。结果要交给别人时,先说明这是随源数据计算的查询结果;如果要保留某一时点的固定名单,复制后在另一块区域选择性粘贴为数值,不覆盖原来的查询公式。

四、看起来列名相同,也可能拼错位置

VSTACK是按列的位置拼接,不是按表头名称匹配。假如一店的A列是订单号、B列是商品,而二店恰好相反,那么二店的商品会落进汇总表的“订单号”列。列数相同,这种错误也可能不报错,因此不能只看公式是否成功回车。

开始前把两张表都调整成“订单号、商品、数量”的顺序,再输入公式。调整列时连同表头和整列数据一起移动,在副本上核对,不要只改表头文字来掩盖错位。拼好以后,至少检查每张分表的第一条和最后一条记录,确认字段没有串列。

如果两边列数不同,Excel会按较宽的区域返回结果,缺少的位置可能显示#N/A。先检查是否少选或多选了列,不急着把所有错误隐藏起来。表头在中间重复出现,则先检查是不是把两张表的第1行也一起选进了公式。

还有一点容易误会:原表里手动隐藏的行,或通过筛选按钮暂时藏起来的行,只要仍在引用区域内,也会参与拼接。本例不做“仅复制可见行”的处理。表格边框、底色和列宽也不是跟着VSTACK一起搬过来的,需要在汇总区另外设置。

五、分表更新,哪些会跟着变?

先做一个小验证:保持原公式,把“二店”的C2从4改成7。在正常自动计算的情况下,汇总表中S201的数量也会变成7,但总表仍是5条记录。验证完把数量恢复为4。这里变化的是已经被公式引用到的单元格内容。

再在“二店”的A4:C4新增S203/文件夹/1。此时原公式只引用二店到第3行,新加的第4行还不在范围里,汇总表不会凭空多出第6条。将“汇总”A2的公式改为下面这一条,再按回车:

=VSTACK('一店'!A2:C4,'二店'!A2:C4)

这时A2:C7应有6条记录,顺序为S101、S102、S103、S201、S202、S203,数量依次是3、5、2、4、6、1,合计21。两条公式的差别只在第二个区域的末行:从C3扩大到C4,一店的范围不变。

因此,“源数据改了会重新计算”和“新增记录会自动纳入”是两件事。本例使用固定区域,每次新增到区域以外,都要检查并调整引用。后来再建一张“三店”,也不会自动被这两个参数找到,需要另外加入对应区域。

不要为了省事,直接把两个范围都写成整列,或者预留几十万行。VSTACK会把选中的行一起拼进来,空行不会自动跳过,引用的空单元格还可能显示为0;同时也会占用更多计算和输出空间。本篇先用准确范围,处理经常增长的数据时,再考虑表对象引用或查询工具等进阶方案,并单独核对Excel与WPS的兼容情况。

六、遇到报错,先按这个顺序检查

出现#NAME?等无法识别函数的提示,先检查VSTACK拼写及当前版本。出现#SPILL!或中文“#溢出!”提示,检查“汇总”的A2周围是否有旧备注、合并单元格,或只显示空白的公式;它们都可能挡住结果。先确认旧内容是否需要保留,再移到结果区域以外,不直接删除源表来试错。

在Excel中,动态溢出公式要放在普通工作表区域,不能写在“插入→表格”建立的Excel表对象内部。本例的“汇总”只是普通工作表,没有把输出区建成表对象。公式还应放在分表以外的独立汇总位置,避免引用自己、覆盖源数据或形成循环引用。

如果结果看着没更新,先检查改动位置是否在公式范围内,再看工作簿是否处于手动计算模式。对不上顺序时,检查参数排列和源表原有行序;出现意外重复时,回到分表查记录,不把“重复出现”直接认定成函数出错。VSTACK负责逐行拼接,不负责判断哪些订单应该删除,也不负责检查源数据本身是否填对。

没有VSTACK的版本也有替代路线。表少、只需整理一次时,在汇总表只保留一行表头,逐张复制实际明细,再粘贴为数值,逐次核对条数;这种结果不会随分表修改而自动更新。Excel中如具备Power Query,可用“追加查询”处理持续合并需求,按其规则设置数据源与刷新。WPS的合并表格工具则受版本、入口与账号权限影响,以当前客户端实际功能为准,不把Excel的菜单路径照搬过去。

这次先记住五件事:列含义和顺序一致,明细不带重复表头,公式只写在汇总区左上角,新增行检查引用,最后核对记录和数量。 从两张小表做起,确认每条记录都能追溯回分表,再迁移到自己的正式文件。

往期精选

竟然免费?Excel系统化学习资料汇总-看过后你一定不会后悔的

Excel 查找与筛选函数全解析-终篇:人人都该掌握的高效数据处理技巧

相关学习资料