VSTACK和UNIQUE是Excel 365及后续版本的核心动态数组函数,二者搭配可高效完成多表合并、去重汇总等操作,以下是完整的详细用法说明:
一、VSTACK函数详细用法
-
基础定义与语法
-
核心功能:将多个数组/单元格区域按行垂直拼接,生成一个新的合并数组,是多表快速汇总的核心工具。
-
标准语法:=VSTACK(数组1,[数组2],...),最多支持约254个参数,参数可直接引用单元格区域、数组或单个数值。
-
核心特性
-
垂直堆叠:所有数据从上到下依次拼接,不会改变原始数据的行顺序。
-
列数对齐:合并后的结果列数,自动取所有输入数组中的最大列数。
-
缺列补错:如果某一个输入数组的列数小于最大列数,缺失的列位置会自动返回#N/A错误。
-
消错处理:搭配IFERROR(VSTACK(...),""),可将合并产生的#N/A错误批量替换为空单元格。
-
高频实用场景
-
多表常规合并:=VSTACK(表1!A2:D10,表2!A2:D10),直接拼接两个工作表的指定数据区域。
-
合并后排序:=SORT(VSTACK(...),2,-1),合并完成后按第2列降序排序。
-
跨工作表批量汇总:=VSTACK('1月:3月'!A2:D100),通过三维引用一次性合并1月到3月所有工作表的指定区域。
-
关键使用注意事项
-
表头处理:多表合并时仅在第一个表保留表头,其余待合并区域只选择数据行,避免合并后出现重复表头。
-
列数控制:尽量保证所有待合并区域的列数一致,列数差异过大会产生大量#N/A错误。
-
超级表适配:将源数据表转为超级表后,后续新增数据会自动同步更新到VSTACK的合并结果中,无需手动修改公式区域。
-
二、UNIQUE函数详细用法
-
基础定义与语法
-
核心功能:从指定区域或数组中,自动提取出所有不重复的唯一值,是Excel原生去重的最高效方案。
-
支持版本:仅适配Microsoft 365、Excel 2021及以上版本,旧版Excel无法直接使用该函数。
-
标准语法:=UNIQUE(array,[by_col],[exactly_once])
-
array:必填参数,指定要从中提取唯一值的单元格区域或数组。
-
by_col:可选逻辑值,FALSE(默认/省略)表示按行对比提取唯一行,TRUE表示按列对比提取唯一列。
-
exactly_once:可选逻辑值,FALSE(默认/省略)返回所有不同的行/列,TRUE仅返回在数据源中恰好出现1次的行/列。
-
高频实用场景
-
单列提取不重复值:=UNIQUE(B2:B6),省略后两个参数,直接从B列的值班人员名单中提取所有不重复的姓名。
-
单行提取不重复值:=UNIQUE(B2:F2,TRUE),第二参数设为TRUE,从同一行的多列值班人员中提取不重复值。
-
提取仅出现一次的记录:=UNIQUE(B2:B6,,TRUE),第二参数省略,第三参数设为TRUE,筛选出名单中仅出现过1次的人员。
-
多列组合去重:=SORT(UNIQUE(B2:B12&" "&A2:A12)),将姓氏和名字拼接为全名后,提取不重复的全名并自动排序。
-
关键使用注意事项
-
溢出特性:输入公式按回车后,Excel会自动动态生成对应大小的结果区域,无需手动拖拽填充。
-
表格联动:如果数据源设置为Excel结构化表格,新增或删除数据时,UNIQUE的结果区域会自动重设大小同步更新。
-
跨簿限制:仅当两个关联工作簿都处于打开状态时,跨工作簿的UNIQUE公式才能正常计算,关闭源工作簿后会返回#REF!错误。