你现在的位置:
函数UNIQUE从数据范围中提取唯一值(去重)
一、函数概述
UNIQUE 是 Excel 365 和 Excel 2021 引入的动态数组函数,用于从数据范围中提取唯一值(去重)。结果会自动溢出到相邻单元格,数据更新时自动刷新 。
核心优势:
- ✅ 一键去重:无需手动操作”删除重复项”
- ✅ 动态更新:源数据变化时结果自动刷新
- ✅ 多维度:可按行或按列提取唯一值
- ✅ 灵活筛选:可提取所有唯一值,或仅提取出现一次的值
- ✅ 组合强大:与 SORT、FILTER 等函数配合实现高级分析
二、语法结构
=UNIQUE(
array, ← 必需:要去重的数据范围或数组
[by_col], ← 可选:FALSE=按行比较(默认), TRUE=按列比较
[exactly_once] ← 可选:FALSE=所有唯一值(默认), TRUE=仅出现一次的值
)
三、参数详解
| 参数 | 必需 | 说明 | 常用取值 |
|---|---|---|---|
| array | 是 | 要去重的数据范围(单行、单列或多行多列) | A2:A100、B2:D50 |
| by_col | 否 | 比较方向 | FALSE 或省略=按行比较;TRUE=按列比较 |
| exactly_once | 否 | 出现次数筛选 | FALSE 或省略=所有唯一值;TRUE=仅出现一次 |
关键说明:
by_col=FALSE(默认):逐行比较,去除重复行exactly_once=TRUE:只返回在源数据中出现恰好一次的值(真正唯一的值)- 空白单元格和 0 被视为不同值,都会保留
四、实用示例
示例 1:基础去重(最常用)
场景:从 B 列提取不重复的商品名称列表
=UNIQUE(B2:B75)
- 直接在结果单元格输入公式
- 自动溢出显示所有唯一值
整列去重:
=UNIQUE(C11:C131)
- 虽然只在 F11 输入公式,结果会自动扩展到其他单元格
示例 2:按列去重(横向数据)
场景:从一行数据中提取唯一值
=UNIQUE(C3:J3, TRUE)
- 第2参数
TRUE表示按列比较 - 适用于横向排列的数据
示例 3:提取仅出现一次的值(真正唯一)
场景:找出只购买过一次的客户
=UNIQUE(A2:A10, FALSE, TRUE)
- 第3参数
TRUE:只返回出现恰好一次的值 - 重复出现的客户会被排除
示例 4:多列组合去重
场景:根据姓名和部门组合去重
=UNIQUE(A2:B10)
- 同时检查 A 列(姓名)和 B 列(部门)
- 只有当两列都相同时才视为重复
只提取姓名唯一值:
=UNIQUE(A2:A10)
示例 5:配合 SORT 排序去重
场景:提取唯一值并自动排序
=SORT(UNIQUE(B2:B16))
- 先用 UNIQUE 去重
- 再用 SORT 按字母升序排列
降序排列:
=SORT(UNIQUE(B2:B16), , -1)
示例 6:配合 FILTER 条件去重
场景:先筛选再提取唯一值
=UNIQUE(FILTER(D2:D17, A2:A17=G1))
- 先用 FILTER 筛选出符合 G1 条件的记录
- 再用 UNIQUE 提取唯一产品列表
去除空值后去重:
=UNIQUE(FILTER(A2:A500, A2:A500<>""))
- 先过滤掉空单元格,再提取唯一值
示例 7:配合 TEXTJOIN 合并唯一值
场景:将唯一值合并为逗号分隔的字符串
=TEXTJOIN(", ", TRUE, UNIQUE(B2:B20))
- 提取唯一值后用 TEXTJOIN 合并
- 适用于生成下拉列表选项
示例 8:跨工作表去重
场景:合并多个工作表数据后去重
=UNIQUE(VSTACK('1月:12月'!A2:A100))
- 先用 VSTACK 合并全年数据
- 再用 UNIQUE 去除重复客户
示例 9:创建动态下拉列表
场景:根据数据自动生成下拉选项
=UNIQUE(SORT(B2:B100))
- 去重并排序后,作为数据验证的源
- 数据新增时,下拉列表自动更新
示例 10:找出两列差异(对比唯一值)
场景:比较两列,提取只在一列中出现的值
=UNIQUE(FILTER(A2:A10, COUNTIF(B2:B10, A2:A10)=0))
- 提取在 A 列但不在 B 列的唯一值
- 实现数据对比功能
五、注意事项
| 注意点 | 说明 |
|---|---|
| 版本要求 | 仅 Excel 365、Excel 2021、Excel 网页版支持 |
| #SPILL! 错误 | 结果区域被占用时显示,需清空下方/右侧单元格 |
| 空白与 0 | 空单元格和数字 0 被视为不同值,都会保留 |
| 跨工作簿 | 引用其他工作簿时,源文件必须打开,否则返回 #REF! |
| 结构化引用 | 使用 Excel 表格(Ctrl+T)可自动扩展范围 |
| 旧版兼容 | 旧版 Excel 不支持,可用 Remove Duplicates 功能替代 |
六、UNIQUE vs 删除重复项功能对比
| 特性 | 删除重复项功能 | UNIQUE 函数 |
|---|---|---|
| 操作方式 | 手动菜单操作 | 公式自动计算 |
| 动态更新 | ❌ 需重复操作 | ✅ 自动刷新 |
| 结果位置 | 覆盖原数据 | 可放置到任意位置 |
| 灵活性 | 固定操作 | 可嵌套其他函数 |
| 撤销 | 无法撤销(破坏性) | 随时可修改公式 |
七、推荐组合技巧
| 组合函数 | 用途 | 示例 |
|---|---|---|
| SORT | 去重后排序 | =SORT(UNIQUE(A:A)) |
| FILTER | 条件去重 | =UNIQUE(FILTER(A:A, B:B="条件")) |
| TEXTJOIN | 合并唯一值 | =TEXTJOIN(",", , UNIQUE(A:A)) |
| COUNTA | 统计唯一值数量 | =COUNTA(UNIQUE(A:A)) |
| VSTACK/HSTACK | 多表合并去重 | =UNIQUE(VSTACK(表1, 表2)) |
| INDEX+SEQUENCE | 分批提取 | =INDEX(UNIQUE(A:A), SEQUENCE(5)) |
八、常见问题解决
| 问题 | 解决方案 |
|---|---|
| 包含空值 | 先用 FILTER 过滤:FILTER(A:A, A:A<>"") |
| 大小写敏感 | UNIQUE 本身区分大小写,如需忽略大小写,先用 UPPER/LOWER 统一 |
| 部分匹配去重 | 需先用 LEFT/RIGHT/MID 提取关键部分再 UNIQUE |
| 结果太长 | 配合 TAKE 或 CHOOSEROWS 限制输出数量 |

发表回复