UNIQUE 函数:在 Microsoft Excel 中查找唯一值的快速方法

2025年3月17日 | 阅读13分钟

在本教程中,我们将研究如何利用 UNIQUE 函数和动态数组在 Microsoft Excel 中获取唯一值;我们将学习一个简单的公式来查找列或行中的唯一值,在多列中,基于条件,以及更多内容。

此外,众所周知,在 Microsoft Excel 的早期版本中,提取唯一值列表也是一项艰巨的任务。在这里,我们将看到如何轻松发现仅出现一次的唯一性,提取列表中的所有不同项,忽略空白项,以及更多。

每项任务都需要组合多个函数和一个多行数组公式,只有 Excel 大师才能完全理解。

此外,Microsoft Excel 365 中引入的 UNIQUE 函数改变了一切!曾经是高难度的事情现在变得轻而易举,不是吗?现在,我们无需成为公式专家即可根据一个或多个条件从范围中获取唯一值并按字母顺序排列结果。

  1. Microsoft Excel 中的 UNIQUE 函数是什么意思?
    1. Microsoft Excel 中使用的基本 UNIQUE 公式是什么?
    2. UNIQUE 函数:重要说明和技巧。
  2. 如何查找唯一值:公式示例?
    1. 我们如何提取仅出现一次的相应值?
    2. 如何找出出现多次的不同值?
    3. 如何在多列中查找唯一值(在唯一行中)?
    4. Microsoft Excel 的唯一值按字母顺序排序。
    5. 将多个列的特定唯一值连接到一个单元格中。
    6. 根据条件获取相应唯一值列表。
    7. 基于多个条件的唯一值。
    8. 在 Microsoft Excel 中使用多个 OR 条件的唯一值。
    9. 如何在 Microsoft Excel 中查找唯一值,忽略空白单元格?
    10. 如何找出非相邻列中的唯一值?
    11. 我们如何找出唯一值并处理错误?

Microsoft Excel 中的 UNIQUE 函数是什么意思?

众所周知,Microsoft Excel 中的 UNIQUE 函数会返回给定范围或数组的唯一值列表,因为它适用于任何数据,如下所示:

  1. 文本。
  2. 数字。
  3. 时间。
  4. 日期等。

该函数主要归类为动态数组函数,其结果是一个动态数组,会自动垂直或水平溢出到相邻单元格。

语法

Microsoft Excel 中 UNIQUE 函数的语法如下:

其中,

  1. 数组 (必需): 用于返回唯一值的范围或数组。
  2. 按列 (可选): 一个逻辑值,指示如何比较数据。
    1. TRUE:分别跨列比较数据。
    2. FALSE 或省略(默认):也跨行比较数据。
  3. 仅一次 (可选): 一个逻辑值,定义哪些值被视为唯一。
    1. TRUE:返回仅出现一次的值,这是数据库意义上的唯一。
    2. FALSE 或省略(默认):分别返回范围或数组中的所有不同(不重复)值。

重要提示。 UNIQUE 函数仅在 Microsoft Excel for Microsoft 365 和 Excel 2021 版本中可用。Microsoft Excel 2019 和 2016 及更早版本不支持动态数组公式,因此在这些版本中有效不可用 UNIQUE 函数。

Microsoft Excel 中使用的基本 UNIQUE 公式是什么?

下面是 Excel 唯一值公式的最简单形式。

主要目标是从 B2:B10 的给定范围中提取唯一姓名列表。为此,我们需要在 D2 列中输入以下公式:

=UNIQUE (B2:B10)

应该注意的是,第二个和第三个参数被省略了,因为默认值在我们的情况下工作得很好,因为我们正在逐行比较,并且希望返回范围内的所有不同姓名。

之后,当我们从键盘按下 Enter 键完成公式时,Excel 将在 D2 中输出找到的第一个姓名,并将其他姓名溢出到下面的单元格中。结果,我们在选定的列中获得了所有唯一值。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

如果我们的数据跨越 B2 到 I2 列,则将第二个参数设置为 TRUE 以跨列进行比较。

=UNIQUE (B2:I2, TRUE)

然后,我们在单元格 B4 中输入上述公式并按 Enter,结果将水平溢出到右侧的相应单元格。因此,我们将获得行中的唯一值。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

UNIQUE 函数:重要说明和技巧

在 Microsoft Excel 中,UNIQUE 函数被认为是一个新函数,与其他动态数组函数一样,它也有一些我们都应该注意的特殊性。

  1. 假设 UNIQUE 函数返回的数组是最终结果(未传递给其他函数)。在这种情况下,Microsoft Excel 将动态创建一个大小合适的范围并用结果填充它。公式只需在一个单元格中输入。此外,重要的是,我们需要在需要输入公式的单元格下方和/或右侧有足够的空白单元格;否则,将出现一个错误,即 #SPILL 错误。
  2. 在这里,当源数据发生变化时,结果将自动更新。但是,添加到引用数组外部的新条目仅在公式中包含一次,除非我们更改数组引用。如果我们希望数组自动响应源范围的大小调整,我们将把范围转换为相应的 Excel 表并使用结构化引用或创建动态命名范围。
  3. 此外,不同 Excel 文件之间的动态数组仅在两个工作簿都打开时才有效。如果源工作簿已关闭,那么链接的 UNIQUE 公式将返回一个错误:#REF! 错误。
  4. 与其他动态数组函数一样,UNIQUE 函数只能在普通范围内使用,不能在表中。将其放入 Microsoft Excel 表中将返回 #SPILL! 错误。

如何查找唯一值:公式示例?

下面的示例将展示 UNIQUE 函数在 Microsoft Excel 中的更多实际用途。主要思想是提取唯一值或删除重复项,这取决于我们自己的观点,以最简单的方式。

如何提取仅出现一次的唯一值?

要获取在指定范围内仅出现一次的值列表,请将 UNIQUE 的第三个参数设置为 TRUE。

例如:要一次提取获胜者名单中的姓名,我们将分别使用此公式:

其中单元格范围 B2:B10 是源范围,第二个参数(按列)为 FALSE 或省略,因为我们的数据是按行组织的。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

我们如何在 Excel 工作表中查找出现多次的不同值?

如果我们追求相反的目标,也就是说,我们希望获得在给定范围内出现多次的值列表,那么我们将使用 UNIQUE 函数以及 FILTER 和 COUNTIF 函数。

  • 例如:要提取在 B2:B10 单元格中出现多次的不同姓名,我们也可以使用此公式:
UNIQUE function: a quick method to find a unique value in Microsoft Excel

上述公式的工作原理

众所周知,公式的核心是 FILTER 函数,它根据 COUNTIF 函数返回的出现次数过滤掉所有重复条目。在我们的例子中,COUNTIF 的结果是此计数数组:

{4;1;3;4;4;1;3;4;3}

比较运算(>1)将上述数组更改为 TRUE 和 FALSE 值,其中 TRUE 代表出现多次的项。

{TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE}

此数组被传递给 FILTER 作为包含参数,告诉函数包含哪些相应的值在结果数组中。

{"Andrew";"David";"Andrew";"Andrew";"David";"Andrew";"David"}

我们可以注意到只有对应 TRUE 的值才会有效保留。

此外,上述数组移动到 UNIQUE 函数的数组参数,在删除重复项后,它有效地输出最终结果。

{"Andrew";"David"}

注意:应该注意的是,类似地,我们可以轻松过滤出出现次数多于两次或多于三次等的唯一值。为此,我们可以分别更改逻辑比较中的数字。

如何在 Microsoft Excel 中查找多列(唯一行)中的唯一值?

在这种特殊情况下,当我们想要比较两列或更多列并返回它们之间的唯一值时,那么在这种情况下,我们可以轻松地将所有目标列包含在数组参数中。

例如,如果我们想返回获胜者的唯一名字(A 列)和姓氏(B 列),那么在这种情况下,我们将在单元格 E2 中输入此公式:

=UNIQUE (A2:B10)

之后,我们将从键盘按下 Enter 键以产生以下结果:

UNIQUE function: a quick method to find a unique value in Microsoft Excel

要获取唯一行,即 A、B 和 C 列值组合唯一的条目,需要使用以下公式:

=UNIQUE (A2:C10)

UNIQUE function: a quick method to find a unique value in Microsoft Excel

如何轻松获取 Excel 中按字母顺序排序的唯一值列表?

我们通常如何在 Microsoft Excel 中按字母顺序排序?就像使用 Excel 的内置功能一样,即排序或筛选。与此相关的问题是,我们需要在每次选定的源数据更改时重新排序,因为与 Excel 公式可以自动重新计算每次工作表更改不同,这些功能必须手动重新应用。

此外,随着动态数组函数的引入,上述问题可以轻松解决。但是我们需要做的就是简单地将 SORT 函数包装在一个常规的 UNIQUE 公式周围,如下所示:

SORT (UNIQUE (array))

  • 例如:提取 A 列到 C 列的唯一值,并将结果从 A 到 Z 排序,我们将分别使用此公式:

=SORT (UNIQUE (A2:C10))

与上面的例子相比,输出更容易理解和使用。例如,我们可以看到 Andrew 和 David 也赢得了不同的比赛。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

重要提示。在此示例中,我们通常按 A 到 Z 的顺序对第一列中的值进行了排序,这是 SORT 函数的默认设置;因此,省略了可选的sort_indexsort_order参数。

如何在多个列中查找唯一值并将其连接到一个单元格中?

在多个列中搜索时,Microsoft Excel 的 UNIQUE 函数默认会输出每个值在一个单独的单元格中。也许,我们会发现将结果放在一个单元格中更方便。

要实现这一点,我们不引用整个范围,而是使用 ampersand (&) 连接列,并在它们之间放置所需的定界符。

例如,我们连接单元格范围 A2:A10 中的名字和单元格范围 B2:B10 中的姓氏,然后在它们之间用空格字符 (" ") 分隔值。

=UNIQUE (A2:A10&" "&B2:B10)

结果,我们可以获得一个包含完整姓名的列。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

如何根据各种条件获取唯一值列表?

要使用条件提取唯一值,我们可以同时使用 Excel 的 UNIQUE 和 FILTER 函数。

  1. FILTER 函数将数据限制为满足给定条件的值。
  2. UNIQUE 函数会从过滤后的列表中删除重复项。

下面是过滤后的唯一值公式的通用版本。

UNIQUE (FILTER (array, criteria_range = criteria))

  • 以此为例:让我们获取特定运动的获胜者列表。首先,我们在某个单元格(例如 F1)中输入感兴趣的运动。然后,我们可以使用以下公式分别获取唯一名称:

=UNIQUE (FILTER (A2:B10, C2:C10=F1))

A2:B10 是用于查找唯一值的范围,C2:C10 是用于检查条件的范围。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

如何过滤基于多个条件的唯一值?

要使用两个或更多条件查找唯一过滤值,我们可以使用下面显示的表达式来构建 FILTER 函数所需的条件。

UNIQUE (FILTER (array, (criteria_range1 = criteria1) * (criteria_range2 = criteria2)))

公式的结果是唯一条目的列表,所有指定条件都为 TRUE。在 Microsoft Excel 中,这也称为 AND 逻辑。

为了看到公式的实际效果,让我们获取 G1 中的运动(条件 1)和 G2 中的年龄以下(条件 2)的唯一获胜者列表。

以 A2:B10 为源范围,C2:C10 为运动(criteria_range 1),D2:D10 为年龄(criteria_range 2),公式形式如下:

=UNIQUE (FILTER (A2:B10, (C2:C10=G1) * (D2:D10<G2)))

它返回了我们正在寻找的正是结果。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

上述公式的工作原理

以下是公式逻辑的高层解释:

因此,在 FILTER 函数的包含参数中,我们将提供两个或更多范围/条件对。每个逻辑表达式的结果是 TRUE 和 FALSE 值数组。数组的乘法将逻辑值强制转换为数字,并生成 1 和 0 的数组。由于乘以零总是得到零,只有满足所有条件的条目在最终数组中具有 1。然后 FILTER 函数过滤掉对应于 0 的项,并将结果分别传递给 UNIQUE。

如何使用多个 OR 条件查找过滤后的唯一值?

要获取基于多个 OR 条件的唯一值列表,即当此或那个条件为 TRUE 时,我们将添加逻辑表达式而不是相乘。

UNIQUE (FILTER (array, (criteria_range1 = criteria1) + (criteria_range2 = criteria2)))

  • 例如:要显示足球曲棍球比赛的获胜者,我们可以分别有效地使用此公式:

=UNIQUE (FILTER (A2:B10, (C2:C10="Soccer") + (C2:C10="Hockey")))

如果需要,我们当然可以输入单独单元格中的条件,并引用下面所示的那些单元格。

=UNIQUE (FILTER (A2:B10, (C2:C10=G1) + (C2:C10=G2)))

上述公式的工作原理

这就像我们测试多个 AND 条件一样,我们可以轻松地将几个逻辑表达式放在 FILTER 函数的包含参数中,每个表达式返回一个 TRUE 和 FALSE 值数组。当这些数组相加时,满足一个或多个条件的项的值将为 1。所有条件都为 FALSE 的项的值为 0。结果是,任何满足任何单个条件的条目都会有效地进入传递给 UNIQUE 函数的数组。

如何在 Microsoft Excel 中获取唯一值,忽略空白?

如果我们处理的数据集主要包含一些空白,通过常规公式获得的唯一值列表可能会包含一个空单元格或零值。这是因为 Microsoft Excel 的 UNIQUE 函数旨在返回范围内的所有不同值,包括空白。因此,如果我们的源范围包含零和空白单元格,则特定唯一列表将包含 2 个零,一个代表空白单元格,另一个代表零值。

此外,如果源数据包含由某些公式返回的空字符串,则唯一列表还将包含一个空字符串 (""),该字符串看起来像一个空白单元格。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

要获取没有空白的唯一值列表,那么在这种情况下,我们需要执行以下操作:

  1. 同样使用 FILTER 函数过滤掉空白单元格和空字符串。
  2. 利用 UNIQUE 函数仅将结果限制为唯一值。

通用形式的公式如下:

UNIQUE (FILTER (range, range<>"))

此外,在本例中,单元格 D2 中的公式是:

=UNIQUE (FILTER (B2:B12, B2:B12<>""))

结果,Excel 返回不带空单元格的姓名列表。

UNIQUE function: a quick method to find a unique value in Microsoft Excel

如何找出 Excel 中特定列的唯一值?

有时,我们可能希望从两个或多个不相邻的列中提取唯一值。那时我们也可能希望重新排列结果列表中的列。这两项任务都可以通过 CHOOSE 函数来完成。

UNIQUE (CHOOSE ({1, 2,},range1, range2))

从我们的示例表中,假设我们希望获取基于 A 列和 C 列值的获胜者列表,并按以下顺序排列结果:首先是运动(C 列),然后是运动员姓名(A 列)。要完成此操作,我们构建如下公式:

=UNIQUE (CHOOSE ({1, 2}, C2:C10, A2:A10))

并将得到以下结果:

UNIQUE function: a quick method to find a unique value in Microsoft Excel