=UNIQUE(B2:B8) 按首次出现的顺序把 B2:B8 中的每个值返回一次。下面的表格中 North 出现了三次,South 出现了两次,而结果中每个地区只列出一次。结果从 E2 向下溢出,修改数据时会自动更新:在 B5 中输入 West,East 就会从结果中消失,因为 Cara 那一行是它唯一的一行。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | |
| 2 | Ann | North | 120 | North | |
| 3 | Ben | South | 80 | South | |
| 4 | Ann | North | 90 | East | |
| 5 | Cara | East | 150 | West | |
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
UNIQUE 不会改变原来的列表。要从表格本身删除重复的行,请使用“数据”选项卡上的“删除重复值”按钮(删除重复值一文介绍了这两种方法)。
UNIQUE 语法
=UNIQUE(array, [by_col], [exactly_once])
array:要从中提取值的区域或数组。by_col:为 FALSE(默认值)时按行比较,为 TRUE 时按列比较。exactly_once:为 FALSE(默认值)时返回所有不重复的值,为 TRUE 时只返回只出现过一次的值。
UNIQUE 需要 Excel 2021、Excel 2024 或 Microsoft 365,在更早的版本中会显示 #NAME?。Google Sheets 也有 UNIQUE,三个参数完全相同。
如果列表是横向排在一行中,而不是纵向排在一列中,就把 by_col 设为 TRUE:=UNIQUE(B1:H1,TRUE) 以一行的形式返回这一行中不重复的值。
多列数据中的唯一行
给 UNIQUE 传入多列时,它会比较整行:只有每一列都和另一行相同时,这一行才算重复。下面比较的是销售代表和地区的组合:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Rep | Region | |
| 2 | Ann | North | 120 | Ann | North | |
| 3 | Ben | South | 80 | Ben | South | |
| 4 | Ann | North | 90 | Cara | East | |
| 5 | Cara | East | 150 | Dan | North | |
| 6 | Ben | South | 80 | Eve | West | |
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
Ann 和 North 出现了两次,Ben 和 South 也一样,所以 7 行变成了 5 行。Dan 也在 North,但 Dan 和 North 是另一个组合,所以保留了下来。如果用全部三列,=UNIQUE(A2:C8) 会保留 Ann 的两行(120 和 90 不同),只删掉第二个 Ben、South、80 那一行。
只出现一次的值
第三个参数把问题从“有哪些值”变成了“哪些值没有重复”:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Distinct | Exactly once | |
| 2 | Ann | North | 120 | Ann | Cara | |
| 3 | Ben | South | 80 | Ben | Dan | |
| 4 | Ann | North | 90 | Cara | Eve | |
| 5 | Cara | East | 150 | Dan | ||
| 6 | Ben | South | 80 | Eve | ||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
E2 列出了全部五个销售代表。F2 只列出 Cara、Dan 和 Eve,因为 Ann 和 Ben 各出现了两次。两个逗号跳过了 by_col,让它保持默认值。
排序后的唯一值列表
UNIQUE 保留首次出现的顺序。要按字母顺序排列,就用 SORT 把它包起来。旁边的 COUNTA 统计有多少个不重复的值:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions A to Z | Count | |
| 2 | Ann | North | 120 | East | 4 | |
| 3 | Ben | South | 80 | North | ||
| 4 | Ann | North | 90 | South | ||
| 5 | Cara | East | 150 | West | ||
| 6 | Ben | South | 80 | |||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
E2 返回 East、North、South、West,F2 显示 4。按 Z 到 A 排列请用 =SORT(UNIQUE(B2:B8),,-1)。只计数不列出时,=ROWS(UNIQUE(B2:B8)) 同样得到 4;统计不重复值一文介绍了在没有 UNIQUE 的 Excel 版本中使用的公式。
按条件提取唯一值
要只从满足条件的行中提取不重复的值,先筛选,再把结果交给 UNIQUE。下面找出至少有一笔 90 或以上销售额的销售代表:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Reps | |
| 2 | Ann | North | 120 | Ann | |
| 3 | Ben | South | 80 | Cara | |
| 4 | Ann | North | 90 | Eve | |
| 5 | Cara | East | 150 | ||
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
Ann 有两笔这样的销售(120 和 90),但只出现一次。结果是 Ann、Cara 和 Eve。把 C3 改成 100,Ben 就会加入列表。FILTER 中的任何条件在这里都适用,包括把多个条件相乘。
把 UNIQUE 用作下拉列表的来源
用 UNIQUE 生成的下拉列表永远不会出现重复项,有新值时也无需修改列表就能自动加入。单击 F1 并打开列表:其中的选项来自 E 列的 UNIQUE 结果。在 B6 中输入 Central,列表中就会出现第五个选项。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | North | |
| 2 | Ann | North | 120 | North | 270 | |
| 3 | Ben | South | 80 | South | ||
| 4 | Ann | North | 90 | East | ||
| 5 | Cara | East | 150 | West | ||
| 6 | Ben | South | 80 | |||
| 7 | Dan | North | 60 | |||
| 8 | Eve | West | 95 |
F2 汇总所选地区的销售额:North 是 270。在 Excel 中,通过 数据 > 数据验证 > 序列 来设置,在“来源”中输入结果的第一个单元格再加上 #:=$E$2#。# 表示“整个溢出结果”,所以列表会随 UNIQUE 的结果一起变长或变短。像 =$E$2:$E$5 这样的固定区域会漏掉第五个地区。
练习:排序后的唯一值列表
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Region | Sales | Regions | |
| 2 | Ann | North | 120 | ||
| 3 | Ben | South | 80 | ||
| 4 | Ann | North | 90 | ||
| 5 | Cara | East | 150 | ||
| 6 | Ben | South | 80 | ||
| 7 | Dan | North | 60 | ||
| 8 | Eve | West | 95 |
轮到你了: 在 E2 中把每个地区列出一次,并按 A 到 Z 排序。
为什么 UNIQUE 会保留看起来相同的值
除了大小写,UNIQUE 会精确比较每个值。如果一个你以为只出现一次的值出现了两次,说明这些单元格之间有你看不见的差别:
- 结尾有空格。 "North " 和 "North" 是不同的值。用 TRIM 清理源数据,或者在公式中去掉空格:
=UNIQUE(TRIM(B2:B8))。 - 以文本形式存储的数字。
'101和101看起来一样,但其中一个是文本,所以两个都会保留。用 VALUE 或 数据 > 分列 转换这一列。 - 大小写不是问题所在。 UNIQUE 忽略大小写,所以 apple 和 Apple 算作同一个值,结果保留它最先遇到的写法。
=UNIQUE({"apple";"Apple";"North ";"North"})
在 Excel 中,这个公式返回三个值:apple、结尾带空格的 "North " 和 North。
常见问题
Excel 中 UNIQUE 函数有什么作用?
它把区域中每个不同的值返回一次:=UNIQUE(B2:B8) 按每个地区首次出现的顺序,把 B2:B8 中的每个地区只列出一次。结果从公式单元格向下溢出,数据变化时会自动更新。
Excel 中怎么得到排序后的不重复值列表?
用 SORT 把 UNIQUE 包起来:=SORT(UNIQUE(B2:B8)) 按 A 到 Z 返回不重复的值。要按 Z 到 A 排列,就在 SORT 中加上 ,,-1:=SORT(UNIQUE(B2:B8),,-1)。
Excel 中“去重”和“唯一”有什么区别?
=UNIQUE(A2:A8) 返回去重后的值:每个值出现一次,重复出现的值也包括在内。=UNIQUE(A2:A8,,TRUE) 只返回恰好出现一次的值,所有重复出现的值都会被去掉。
为什么我的 Excel 中 UNIQUE 显示 #NAME??
你的版本没有这个函数。UNIQUE 需要 Excel 2021、Excel 2024 或 Microsoft 365。在 Excel 2019 及更早版本中,可以对列表的副本使用 数据 > 删除重复值,或者用 数据 > 高级 并勾选“选择不重复的记录”。