在 Excel 中,VSTACK 函数本身只负责将多个区域垂直堆叠,不具备去重功能。要去除合并后的重复行,需要将其与 UNIQUE 函数嵌套使用。
以下是具体的操作方法和注意事项:
一、核心公式组合
通用公式结构:
excel=UNIQUE(VSTACK(表1数据区域, 表2数据区域, ...))
操作示例:
假设你要合并 Sheet1 的 A2:C10 和 Sheet2 的 A2:C10,并去除完全相同的重复行:
在空白单元格输入:
=UNIQUE(VSTACK(Sheet1!A2:C10, Sheet2!A2:C10))按回车,结果会自动溢出显示,所有完全重复的行仅保留一行。
二、进阶场景处理
1. 合并后同时清除空行/空值
如果源数据中包含大量空白单元格或空行,直接去重可能会保留空白项。可以引入 TOCOL 函数进行净化(适用于单列或多列展平后去重):
excel=UNIQUE(TOCOL(VSTACK(区域1, 区域2), 1))
注:TOCOL 的第二个参数 1 表示忽略空值。此方法更适合将多列数据合并为一列清单后去重。
2. 仅针对特定列去重(保留整行数据)
UNIQUE 默认判断整行是否完全一致。如果你希望根据“合同号”或“姓名”等某一列去重,但保留其他列的最新数据,UNIQUE 无法直接实现。此时建议:
方法 A(辅助列):先用
VSTACK合并,再使用“数据”选项卡下的“删除重复项”功能,勾选指定列。方法 B(Power Query):对于复杂去重逻辑,推荐使用 Power Query 的“删除重复项”功能,可指定依据哪些列判断重复。
3. 处理列数不一致导致的 #N/A
如果参与合并的表格列数不同,VSTACK 会在缺失位置填充 #N/A。这会导致看似相同的数据因错误值而无法被 UNIQUE 识别为重复。
解决方案: 先用 IFNA 清洗数据,再去重。
excel=UNIQUE(IFNA(VSTACK(表1!A2:B5, 表2!A2:C6), ""))
三、关键注意事项
动态数组支持:
VSTACK和UNIQUE均为动态数组函数,需使用 Excel 365、Excel 2021 或最新版 WPS 才能正常使用。旧版 Excel 不支持此组合。表头处理:
VSTACK不会自动识别表头。如果每个子区域都包含表头,合并后会出现多个重复表头。正确做法:在
VSTACK的参数中,第一个区域包含表头,后续区域仅选择数据行(不包含表头)。例如:
=UNIQUE(VSTACK(Sheet1!A1:C10, Sheet2!A2:C10))去重标准:
UNIQUE判断重复的标准是整行内容完全一致(包括空格、标点)。如果数据中存在肉眼不可见的空格差异,可能无法成功去重。建议先使用TRIM函数清理数据空格。
四、替代方案(非公式法)
如果不使用公式,或数据量极大导致公式计算缓慢,可使用以下方法:
Power Query:
数据 → 获取数据 → 从文件夹/工作簿。
使用“追加查询”合并所有表。
选中需要去重的列 → 右键 → “删除重复项”。
优点:支持大数据量,可刷新,不占用单元格公式资源。
传统菜单操作:
手动或用
VSTACK合并数据后。选中结果区域 → 点击“数据”选项卡 → “删除重复项” → 勾选判断依据的列 → 确定。
扫一扫在手机打开







