跳至主要内容

Excel UNIQUE():筛除重复项的最快方法

了解如何使用 Excel UNIQUE() 即时删除重复项,并从任意列表中提取唯一值。学习如何将其应用于行和列。
· 5分钟 阅读

使用 AI 探索

Excel 的 UNIQUE() 函数可以轻松解决去重这一常见又烦人的任务。它是一个简单的公式,但却是必学工具,因为正如您将在本文中看到的,它能从任意范围中提取唯一条目——无论列表有多长(在合理范围内)或变动多频繁。本文将提供清晰的示例和可直接使用的代码块,您只需稍作修改即可复制粘贴到工作表中。希望对您有所帮助。 

Excel UNIQUE() 函数的作用是什么?

先说核心思路。UNIQUE() 会从某个范围或数组返回一个唯一值列表,并自动“溢出”填充所需数量的单元格。这类结果称为动态数组。 

这使它非常适合快速去除列中的重复项,或为下拉菜单、报告生成最新的列表。

需要提醒的是,UNIQUE() 仅适用于 Microsoft 365 版 Excel、Excel 2021 和网页版 Excel。如果您使用的是更早的版本,需要采用替代方案,本文稍后也会介绍。

Excel UNIQUE() 函数语法

了解了它的作用,下面给出语法:

=UNIQUE(array, [by_col], [exactly_once])

各个参数含义如下:

  • array:要从中提取唯一值的范围或数组。

  • by_col(可选):设为 TRUE 时按列比较数据而非按行。多数情况下可留空或设为 FALSE。

  • exactly_once(可选):若只想返回在源数组中仅出现一次的值,请设为 TRUE。默认(FALSE)则返回所有不同值,即使它们出现多次。

接下来在练习示例中,您将看到这些参数的实际用法。

在列表中使用 Excel UNIQUE()

假设 A 列(A2 到 A10)有一个城市列表,其中有些城市重复。要仅提取唯一的城市名称,输入:

=UNIQUE(A2:A10)

Excel UNIQUE function basic example

Excel 会从输入公式的单元格开始,将唯一的城市名称“溢出”填充到下方单元格。只要函数存在,列表就会随源数据变化而自动更新,这也能极大节省时间。如果列表将来会增长,您可以预留更长的范围以应对扩展。

跨多列使用 Excel UNIQUE()

如果数据横跨多列怎么办?例如您有一个两列表(A2:B10),包含姓名和部门,想要每个姓名/部门组合只出现一次。这是该函数一个不太为人所知却很实用的能力。 

=UNIQUE(A2:B10)

Excel UNIQUE function with an array

该公式会返回每个姓名与部门的唯一组合,去除重复的行。如果您只关心唯一的姓名,可以像前面所示那样,让 UNIQUE() 只引用姓名这一列。

=UNIQUE(A2:A10)

Excel UNIQUE function with two columns

使用 Excel UNIQUE() 显示只出现一次的值

如前所述,UNIQUE() 默认会返回所有不同值,即使它们出现多次。但实际上,您可以用 UNIQUE() 过滤掉所有重复出现的值,只显示那些恰好出现一次的值。(我之前展示语法就是为此。)在下面的示例中,我们将使用 exactly_once 参数。

=UNIQUE(A2:A10, FALSE, TRUE)

Excel UNIQUE function for truly unique values

此公式仅返回 A2:A10 中出现一次的值,便于发现这些一次性条目。注意 New York、Chicago 和 Boston 未被包含。 

使用 Excel UNIQUE() 获取唯一列而非唯一行

目前我们主要提取的是唯一行,但 UNIQUE() 也可用于查找唯一列。若将 by_col 设为 TRUE,Excel 会改变默认行为,在指定范围内按列比较并仅返回不同的列。我承认这不太常见,但在某些场景下很有用。

=UNIQUE(A1:F1, TRUE)

Excel UNIQUE function with columns not rows

此处,Excel 会检查所选范围内的每一列,仅返回彼此不同的列。 

Excel UNIQUE() 与其他函数搭配

既然您已熟悉 UNIQUE() 的基本用法,我们来看看它与其他动态数组函数的配合。

要按字母顺序对唯一值排序,只需用 SORT() 包裹 UNIQUE():

=SORT(UNIQUE(A2:A10))

Excel UNIQUE with SORT

或者,如果您想基于某个条件(例如仅“Active”条目)提取唯一值,可将 UNIQUE() 与 FILTER() 结合使用。(这又是一个数组公式,供您继续练习。)

=UNIQUE(FILTER(A2:A10, B2:B10="Active"))

Excel UNIQUE with FILTER

此公式仅返回 A2:A10 中,对应 B2:B10 行被标记为“Active”的唯一项。 

Excel UNIQUE() 的替代方案

您或许会好奇在 UNIQUE() 出现之前大家是如何处理的。过去,提取唯一值通常需要更长的公式,比如下面这个(这里不完整展开):

=IFERROR(INDEX(...

或者,如果不知道 UNIQUE(),您可能会费力地手动删除重复项,或者使用数据透视表这一常见方法。 

这些方法依然可用,也适合旧版本 Excel,但如果您使用的是新版本,强烈建议使用 UNIQUE(),效率更高。

Excel UNIQUE() 常见问题

最后总结一些常见问题,便于您排查:

  • 结果会按需“溢出”到足够多的行或列。如果您在这些单元格中输入内容,会出现 #SPILL! 错误——请保持这些单元格为空。

  • UNIQUE() 不区分大小写,会将 “Apple” 和 “apple” 视为相同。

  • 当源范围更新时,UNIQUE() 的输出会自动更新,保持数据最新。

结论

当您需要清洗数据、创建下拉列表,或用比编写其他公式更省力的方式汇总信息时,Excel 的 UNIQUE() 函数就能派上用场。我们还练习了如何将 UNIQUE() 与 SORT()、FILTER() 等函数配合使用。Take our Advanced Excel Functions course to learn even more, such as lookup functions and database functions.

Josef Waples

作者

Josef Waples

我是数据科学编辑,曾为科学期刊发表的研究论文撰稿。我的兴趣领域包括线性代数、统计学、R 等相关主题。

主题