EXCEL高级函数应用-UNIQUE函数
**Excel UNIQUE 函数:一键提取唯一值的 “去重神器”,数据清洗效率翻倍!
在 Excel 数据处理中,“提取唯一值、去除重复数据” 是数据清洗的高频需求 —— 比如从重复的员工名单中筛选出不重复姓名、从多列订单数据中提取唯一的 “产品 + 客户” 组合、从每日销售记录中整理出不重复的产品列表。过去要么手动筛选删除重复项(易漏删),要么用复杂的 INDEX+MATCH+COUNTIF 嵌套公式(难维护),效率极低。而 Excel 365 推出的UNIQUE 函数,能像 “数据筛子” 一样,一键提取指定区域的唯一值,自动忽略重复项,还能支持多列组合去重,堪称 “数据清洗的效率王者”。今天就带大家从基础到进阶,全面掌握这个实用函数,告别手动去重的繁琐!
一、吃透基础:UNIQUE 函数的语法与参数
UNIQUE 函数的核心是 “从数据区域中提取不重复的值或值组合”,语法极简,仅 1 个必选参数和 1 个可选参数,参数的选择直接决定去重维度(单列 / 多列),需清晰区分。
1. 基本语法
UNIQUE(array, \[by\_col])
-
函数 1 个必选参数(
array),1 个可选参数(by_col),无默认值,需指定要去重的区域; -
返回结果为 “二维数组”:提取的唯一值会按原数据顺序排列,行数 = 唯一值数量,列数 = 去重区域的列数(单列去重返回 1 列,多列去重返回多列)。
2. 参数详细说明
结合 “员工数据去重” 场景,参数含义拆解如下,重点标注 “参数作用” 和 “去重规则差异”,避免混淆:
| 参数名称 | 作用解释 | 通俗举例(员工表场景) | 去重规则与结果 |
|---|---|---|---|
| array | 要去重的 “数据区域”(可以是单列、多列连续区域、跨工作表区域,支持文本、数字、日期等类型) | 1. 单列区域(A2:A100,员工姓名);2. 多列区域(A2:B100,姓名 + 部门);3. 跨表区域(Sheet2!A2:A100) | 1. 单列去重:提取姓名列中不重复的姓名(如 “张三” 重复 3 次,仅保留 1 次);2. 多列去重:提取 “姓名 + 部门” 组合不重复的记录(如 “张三 + 销售部” 重复 2 次,仅保留 1 次);3. 跨表去重:提取 Sheet2 中不重复的姓名,无需切换工作表 |
| [by_col] | 去重维度(TRUE/FALSE):FALSE = 按行去重(默认,适用于多列组合去重),TRUE = 按列去重(适用于单列多行数据按列去重,极少用) | 1. 多列组合去重(A2:B100),选 by_col=FALSE;2. 单列多行按列去重(A2:D2),选 by_col=TRUE | 1. by_col=FALSE(默认):按 “行” 为单位去重,即多列数据中,只有所有列的值完全一致才视为重复(如 A2 = 张三、B2 = 销售部,A3 = 张三、B3 = 技术部,视为不同组合,均保留);2. by_col=TRUE:按 “列” 为单位去重,即单列多行数据中,只有所有行的值完全一致才视为重复(极少用,如 A2:D2 为 “张三,张三,张三,张三”,按列去重返回 1 列 “张三”) |
关键提醒:
-
多列去重时,
array必须是 “连续多列区域”(如 A2:B100),不支持不连续多列(如 A2:A100,C2:C100),否则会返回 #VALUE! 错误; -
若
array是 “空区域”(如 A2:A100 所有单元格空白),UNIQUE 返回空数组;若区域包含错误值(如 #N/A),错误值会被视为唯一值保留(需先用 IFERROR 处理错误值)。
二、核心逻辑:UNIQUE 函数的 2 个去重规则
使用 UNIQUE 前,需先掌握它的两个核心去重规则,这是后续复杂应用的基础,避免出现去重结果不符合预期的问题:
规则 1:单列去重 —— 保留唯一值,忽略重复项
-
适用场景:从单一列中提取不重复的值(如姓名、产品编号、订单号);
-
去重逻辑:遍历列中所有值,若某值已出现过,后续重复值均忽略,仅保留第一次出现的记录;
-
示例:A2:A100 中 “张三” 出现 3 次、“李四” 出现 2 次,UNIQUE 返回 {张三,李四,王五,…},每个姓名仅 1 次。
规则 2:多列组合去重 —— 保留唯一值组合,忽略重复组合
-
适用场景:从多列中提取 “值组合” 不重复的记录(如 “姓名 + 部门”“产品 + 客户 + 日期”);
-
去重逻辑:遍历每一行的多列值,仅当所有列的值完全一致时,才视为重复,否则均视为唯一组合保留;
-
示例:A2:B100 中 “张三 + 销售部” 出现 2 次、“张三 + 技术部” 出现 1 次,UNIQUE 返回 {张三 + 销售部,张三 + 技术部,李四 + 销售部,…},相同组合仅保留 1 次。
三、实战场景:UNIQUE 函数的 6 大核心应用
UNIQUE 函数的价值体现在 “高效去重 + 动态更新”,下面用 6 个高频场景示例,覆盖 “单列去重、多列组合去重、跨表去重、数据统计” 等需求,每个示例均包含 “公式 + 逻辑解析 + 对比传统操作”,凸显效率优势。
示例 1:基础应用 —— 单列文本去重(提取不重复员工姓名)
需求:在 “员工表” 的 A2:A100 列(员工姓名,含重复值)中,提取不重复的姓名,无需手动筛选删除。
传统操作(无 UNIQUE):
-
选中 A2:A100,点击「数据」→「删除重复项」;
-
确认删除后,原数据被修改(重复项被删除),若需保留原数据,需先复制到新区域,步骤繁琐且易误删。
UNIQUE 公式(一键单列去重):
\=UNIQUE(A2:A100)
解析:
-
array=A2:A100:对姓名列去重,重复姓名仅保留第一次出现的记录; -
结果:公式输入在 C2 单元格后,自动溢出返回 C2:Cn 的不重复姓名(n = 唯一姓名数量),原数据完好无损;
-
优势:新增员工姓名到 A101 时,公式结果自动同步更新(若新增姓名重复,不新增;若唯一,自动添加到结果中)。
示例 2:进阶应用 —— 多列组合去重(提取唯一 “姓名 + 部门” 组合)
需求:在 “员工表” 的 A2:B100 区域(姓名 + 部门,含重复组合)中,提取 “姓名 + 部门” 组合不重复的记录(如 “张三 + 销售部” 重复 2 次,仅保留 1 次)。
传统操作(无 UNIQUE):
-
选中 A2:B100,复制到新区域;
-
点击「数据」→「删除重复项」,勾选 “姓名” 和 “部门” 列;
-
手动确认删除,步骤多且无法动态更新(新增组合需重新操作)。
UNIQUE 公式(一键多列去重):
\=UNIQUE(A2:B100)
解析:
-
array=A2:B100:按行去重(by_col=FALSE 默认),仅当 “姓名” 和 “部门” 均相同时视为重复; -
结果:返回 2 列数组,每一行是唯一的 “姓名 + 部门” 组合(如张三 + 销售部、张三 + 技术部、李四 + 销售部);
-
优势:新增 “王五 + 财务部” 到 A101:B101 时,公式自动将该组合添加到结果中,无需重新去重。
示例 3:动态更新 —— 唯一值随原数据实时同步(销售产品去重)
需求:在 “销售表” 中,提取 B2:B100 列(产品名称)的唯一值,当原数据新增 / 删除产品时,唯一值结果自动同步变化。
传统操作(无 UNIQUE):
-
每次新增 / 删除产品后,需重新复制区域、删除重复项,操作重复且易遗漏;
-
若原数据频繁更新,需反复执行去重步骤,效率极低。
UNIQUE 公式(动态同步唯一值):
\=UNIQUE(B2:B100)
解析:
-
UNIQUE 返回的是 “动态数组”,与原数据区域实时联动;
-
原数据新增 “笔记本电脑”(未出现过),结果自动添加 “笔记本电脑”;
-
原数据删除 “手机”(仅 1 次出现),结果自动移除 “手机”;
-
优势:无需手动干预,唯一值结果随原数据实时更新,适合动态报表。
示例 4:跨表应用 —— 提取其他工作表的唯一值(无需切换页面)
需求:在 “汇总表” 中,提取 “Sheet2 销售表” 中 B2:B100 列(客户名称)的唯一值,无需切换到 Sheet2,且结果随 Sheet2 数据同步更新。
传统操作(无 UNIQUE):
-
切换到 Sheet2,复制 B2:B100 到汇总表;
-
在汇总表中删除重复项,后续 Sheet2 数据更新时,需重新复制粘贴去重,步骤繁琐。
UNIQUE 公式(跨表提取唯一值):
\=UNIQUE(Sheet2!B2:B100)
解析:
-
array=Sheet2!B2:B100:直接引用 Sheet2 的客户名称列,无需切换工作表; -
结果:在汇总表中直接显示 Sheet2 的唯一客户名称,Sheet2 新增 / 删除客户时,汇总表结果自动同步;
-
优势:跨表数据联动,减少工作表切换操作,提升报表制作效率。
示例 5:数据统计 —— 结合 COUNTA 统计唯一值数量(客户数量统计)
需求:在 “销售表” 中,先提取 B2:B100 列(客户名称)的唯一值,再统计唯一客户的总数量(即公司合作的客户总数)。
传统操作(无 UNIQUE):
-
选中 B2:B100,删除重复项;
-
用 COUNTA 统计剩余单元格数量,步骤多且原数据被修改。
UNIQUE+COUNTA 公式(一键统计唯一值数量):
\=COUNTA(UNIQUE(B2:B100))
解析:
-
UNIQUE(B2:B100):提取唯一客户名称,返回动态数组; -
COUNTA(...):统计唯一客户名称的数量(COUNTA 统计非空单元格数量,即唯一值数量); -
结果:若提取出 25 个唯一客户,公式返回 25,且随原数据动态更新(新增客户时数量增加,删除唯一客户时数量减少);
-
拓展:若需排除空白值(原数据含空白单元格),公式改为
=COUNTA(UNIQUE(FILTER(B2:B100, B2:B100<>""))),先筛选非空再去重统计。
示例 6:复杂去重 —— 结合 FILTER 先筛选再去重(特定条件唯一值)
需求:在 “销售表” 中,先筛选出 “销售部” 的员工(A2:A100 为姓名,B2:B100 为部门),再提取销售部员工的唯一姓名(排除其他部门,仅保留销售部不重复姓名)。
传统操作(无 UNIQUE):
-
选中 A2:B100,筛选 “部门 = 销售部”;
-
复制筛选后的姓名列到新区域,删除重复项,步骤多且无法动态更新。
UNIQUE+FILTER 公式(筛选后去重):
\=UNIQUE(FILTER(A2:A100, B2:B100="销售部"))
解析:
-
FILTER(A2:A100, B2:B100="销售部"):先筛选出部门为 “销售部” 的所有姓名(含重复); -
UNIQUE(...):对筛选后的姓名去重,提取销售部唯一姓名; -
结果:仅显示销售部不重复的员工姓名,若原数据新增 “销售部 + 王五”,结果自动添加王五;
-
优势:“筛选 + 去重” 一步完成,逻辑集中,结果随原数据动态更新,无需手动干预。
四、总结:UNIQUE 函数的核心优势与注意事项
1. 核心优势(对比传统去重操作)
| 对比维度 | UNIQUE 函数 | 传统手动去重(删除重复项) |
|---|---|---|
| 效率 | 一行公式完成去重,支持动态更新 | 需复制、筛选、删除重复项,步骤多,效率低 |
| 数据安全性 | 不修改原数据,仅返回唯一值数组 | 直接删除原数据重复项,误操作后无法恢复 |
| 灵活性 | 支持单列 / 多列去重、跨表去重、筛选后去重 | 仅支持固定区域去重,复杂场景需多步操作 |
| 动态适应性 | 原数据新增 / 删除时,结果自动同步 | 需重新执行去重步骤,无法实时更新 |
2. 必记注意事项
-
版本要求:UNIQUE 函数仅支持 Excel 365(订阅版)和 Excel 2021,Excel 2019 及以下版本无此函数,会返回 #NAME? 错误;
-
多列去重限制:多列去重仅支持 “连续多列区域”(如 A2:B100),不支持不连续多列(如 A2:A100,C2:C100),否则返回 #VALUE! 错误;
-
错误值处理:原数据含错误值(如 #N/A、#VALUE!)时,错误值会被视为唯一值保留,需先用 IFERROR 处理(如
=UNIQUE(IFERROR(A2:A100, "")),将错误值转为空白后去重); -
结果溢出:UNIQUE 返回的数组会自动溢出,需确保结果区域的下方和右侧无数据,否则会提示 #SPILL! 错误,需清理空白区域。
UNIQUE 函数虽然简单,但却是 Excel 数据清洗的 “核心工具”—— 它把过去繁琐的 “复制 - 筛选 - 删除重复项” 流程,压缩为一行公式,尤其适合员工名单去重、客户数量统计、产品列表整理等场景。掌握它的核心用法,能让你在数据清洗时效率翻倍,告别手动操作的繁琐。建议从简单的单列去重(示例 1)开始尝试,逐步过渡到多列组合去重、筛选后去重等复杂场景,慢慢体会动态去重的便捷!