Menu

Excel UNIQUE 函数:从列表中提取不重复值

=UNIQUE(B2:B8) 按首次出现的顺序把 B2:B8 中的每个值返回一次,列表变化时结果会自动更新。学习提取唯一行、exactly_once、排序后的唯一值列表、统计不重复值的个数,以及把结果用作下拉列表的来源。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=UNIQUE(B2:B8) 按首次出现的顺序把 B2:B8 中的每个值返回一次。下面的表格中 North 出现了三次,South 出现了两次,而结果中每个地区只列出一次。结果从 E2 向下溢出,修改数据时会自动更新:在 B5 中输入 West,East 就会从结果中消失,因为 Cara 那一行是它唯一的一行。

每个地区只出现一次
E2
ABCDE
1RepRegionSalesRegions
2AnnNorth120North
3BenSouth80South
4AnnNorth90East
5CaraEast150West
6BenSouth80
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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 传入多列时,它会比较整行:只有每一列都和另一行相同时,这一行才算重复。下面比较的是销售代表和地区的组合:

销售代表与地区的不重复组合
E2
ABCDEF
1RepRegionSalesRepRegion
2AnnNorth120AnnNorth
3BenSouth80BenSouth
4AnnNorth90CaraEast
5CaraEast150DanNorth
6BenSouth80EveWest
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ann 和 North 出现了两次,Ben 和 South 也一样,所以 7 行变成了 5 行。Dan 也在 North,但 Dan 和 North 是另一个组合,所以保留了下来。如果用全部三列,=UNIQUE(A2:C8) 会保留 Ann 的两行(120 和 90 不同),只删掉第二个 Ben、South、80 那一行。

只出现一次的值

第三个参数把问题从“有哪些值”变成了“哪些值没有重复”:

不重复的销售代表与只出现一次的销售代表
F2
ABCDEF
1RepRegionSalesDistinctExactly once
2AnnNorth120AnnCara
3BenSouth80BenDan
4AnnNorth90CaraEve
5CaraEast150Dan
6BenSouth80Eve
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E2 列出了全部五个销售代表。F2 只列出 Cara、Dan 和 Eve,因为 Ann 和 Ben 各出现了两次。两个逗号跳过了 by_col,让它保持默认值。

排序后的唯一值列表

UNIQUE 保留首次出现的顺序。要按字母顺序排列,就用 SORT 把它包起来。旁边的 COUNTA 统计有多少个不重复的值:

地区按 A 到 Z 排列及其个数
E2
ABCDEF
1RepRegionSalesRegions A to ZCount
2AnnNorth120East4
3BenSouth80North
4AnnNorth90South
5CaraEast150West
6BenSouth80
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E2 返回 East、North、South、West,F2 显示 4。按 Z 到 A 排列请用 =SORT(UNIQUE(B2:B8),,-1)。只计数不列出时,=ROWS(UNIQUE(B2:B8)) 同样得到 4;统计不重复值一文介绍了在没有 UNIQUE 的 Excel 版本中使用的公式。

按条件提取唯一值

要只从满足条件的行中提取不重复的值,先筛选,再把结果交给 UNIQUE。下面找出至少有一笔 90 或以上销售额的销售代表:

有 90 或以上销售额的销售代表
E2
ABCDE
1RepRegionSalesReps
2AnnNorth120Ann
3BenSouth80Cara
4AnnNorth90Eve
5CaraEast150
6BenSouth80
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ann 有两笔这样的销售(120 和 90),但只出现一次。结果是 Ann、Cara 和 Eve。把 C3 改成 100,Ben 就会加入列表。FILTER 中的任何条件在这里都适用,包括把多个条件相乘。

把 UNIQUE 用作下拉列表的来源

用 UNIQUE 生成的下拉列表永远不会出现重复项,有新值时也无需修改列表就能自动加入。单击 F1 并打开列表:其中的选项来自 E 列的 UNIQUE 结果。在 B6 中输入 Central,列表中就会出现第五个选项。

由 UNIQUE 填充的下拉列表
F1
ABCDEF
1RepRegionSalesRegionsNorth
2AnnNorth120North270
3BenSouth80South
4AnnNorth90East
5CaraEast150West
6BenSouth80
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F2 汇总所选地区的销售额:North 是 270。在 Excel 中,通过 数据 > 数据验证 > 序列 来设置,在“来源”中输入结果的第一个单元格再加上 #:=$E$2#。# 表示“整个溢出结果”,所以列表会随 UNIQUE 的结果一起变长或变短。像 =$E$2:$E$5 这样的固定区域会漏掉第五个地区。

练习:排序后的唯一值列表

轮到你了
E2
ABCDE
1RepRegionSalesRegions
2AnnNorth120
3BenSouth80
4AnnNorth90
5CaraEast150
6BenSouth80
7DanNorth60
8EveWest95
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 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 及更早版本中,可以对列表的副本使用 数据 > 删除重复值,或者用 数据 > 高级 并勾选“选择不重复的记录”。

Coddy 编程语言插图

和 Coddy 一起学编程

开始