UNIQUE函数:在Microsoft Excel中快速找到唯一值的方法
在本教程中,我们将学习如何通过使用 UNIQUE函数 以及动态数组来快速在Microsoft Excel中找到唯一值;我们将学习一种简单的公式,以在列或行中找到唯一值,在基于条件的多列中找到唯一值等等。
此外,众所周知,在之前的Microsoft Excel版本中,提取唯一值的列表也是一个难题。在本教程中,我们将看到如何轻松地发现仅出现一次的唯一性,提取列表中的所有不同项,忽略空白等等。
每个任务都需要结合多个函数和多行数组公式,只有Excel专家才能完全理解。
此外,引入Microsoft Excel 365中的UNIQUE函数改变了一切!以前被视为火箭科学的东西变得如ABC般容易了。现在,我们不需要成为公式专家,就可以根据一个或多个条件从范围中获取唯一值,并按字母顺序排列结果。
- 在Microsoft Excel中,UNIQUE函数是什么意思?
1. 在Microsoft Excel中使用的基本UNIQUE公式是什么
2. UNIQUE函数:重要说明和提示。 - 如何找到唯一值:公式示例?
1. 如何提取仅出现一次的相应值?
2. 如何找出出现多次的不同值?
3. 如何在多列(唯一行)中找到唯一值?
4. Microsoft Excel中按字母顺序排列的唯一值。
5. 将多列中的特定唯一值合并到一个单元格中。
6. 根据条件获取相应唯一值的列表。
7. 基于多个条件的唯一值。
8. 在Microsoft Excel中使用多个或条件找到唯一值。
9. 如何在Microsoft Excel中找到唯一值,忽略空白单元格?
10. 如何找出非相邻列中的唯一值?
11. 如何找出唯一值并处理错误?
在Microsoft Excel中,UNIQUE函数是什么意思
众所周知,在Microsoft Excel中,UNIQUE函数将返回给定范围或数组中的唯一值列表,它可用于处理以下任何数据:
- 文本。
- 数字。
- 时间。
- 日期等。
该函数主要归类为动态数组函数,其结果是动态数组,会自动填充到相邻的单元格中,无论是垂直还是水平。
语法:
可以在Microsoft Excel中使用的UNIQUE函数的语法如下:
UNIQUE (array, [by_col], [exactly_once])
在其中,
- Array(必选): 可用于返回唯一值的范围或数组。
- By_col(可选): 这是一个逻辑值,将指示如何比较数据:
1. TRUE:将分别比较每列上的数据。
2. FALSE或省略(默认):也将在行间比较数据。 - Exactly_once(可选): 这是一个逻辑值,将定义哪些值被视为唯一:
1. TRUE:返回仅出现一次的值,这是数据库中唯一的定义。
2. FALSE或省略(默认):分别在范围或数组中返回所有不同的值。
重要说明。 在 Microsoft Excel for Microsoft 365 和 Excel 2021 版本中才有相应的 UNIQUE 函数。而 Microsoft Excel 2019 和 2016 版本及更早版本不支持动态数组公式,因此在这些版本中 UNIQUE 函数无效。
在 Microsoft Excel 中使用的基本 UNIQUE 公式有哪些?
以下是最简单形式的 Excel 唯一值公式。
主要目标是从给定范围 B2:B10 中提取唯一名称列表。为此,我们需要在 D2 单元格中输入以下公式:
=UNIQUE(B2:B10)
需要注意的是省略了第二个和第三个参数,因为默认值在我们的情况下能够正常工作:我们正在相互比较行,并希望返回范围中的所有不同名称。
然后,当我们按下键盘上的 Enter 键以完成公式时,Excel 将在 D2 单元格输出找到的第一个名称,并将其他名称填充到下面的单元格中。结果,我们也将在选择的列中获得所有唯一的值:
如果我们的数据跨越B2到I2列,请将第二个参数设置为TRUE以将列与彼此进行比较:
=UNIQUE (B2:I2, TRUE)
然后,在单元格B4中键入上述公式,按Enter键,结果也会水平地溢出到右侧位置。因此,我们将分别获得一行中的唯一值:
唯一函数:重要的注意事项和提示
在Microsoft Excel中,唯一函数被视为新函数,与其他动态数组函数一样,它也有一些特殊性,我们都应该知道:
- 假设唯一函数返回的数组是最终结果(不传递给其他函数)。在这种情况下,Microsoft Excel将动态创建一个大小合适的范围,并用结果填充它。公式只需输入到一个单元格中即可。此外,重要的是,在我们需要输入公式的单元格下方和右侧需要有足够的空单元格;否则,会出现一个错误,即#SPILL错误。
- 当源数据发生变化时,结果将自动更新。然而,只有在参考的数组范围之外新增的条目只会在公式中包含一次,除非我们更改数组引用。如果我们希望数组能够自动响应源范围的大小调整,我们可以将范围转换为相应的Excel表格,并使用结构引用或有效地创建一个动态命名范围。
- 此外,不同Excel文件之间的动态数组只有在 两个工作簿都打开时 才能正常工作。如果源工作簿关闭,那么链接的唯一公式将返回一个错误,即#REF! 错误。
- 与其他动态数组函数一样,唯一函数只能在正常的范围内使用,而不能在表格中使用。将其放在Microsoft Excel表格中将返回#SPILL! 错误。
如何找到唯一值:公式示例
下面的示例将展示唯一函数在Microsoft Excel中的一些更实际的用法。主要思想是以最简单的方式提取唯一值或删除重复值,具体取决于我们自己的观点。
如何提取仅出现一次的唯一值?
要获取在指定范围中仅出现一次的值的列表,将唯一函数的第三个参数设置为TRUE。
例如: 要提取只在获奖者名单中出现一次的名字,我们将使用以下公式:
=UNIQUE (B2:B10,, TRUE)
在这个例子中,B2:B10是源范围,并且第二个参数(by_col)为FALSE或省略,因为我们的数据是按行组织的。
如何在Excel表格中找到出现多次的不同值?
如果我们的目标是相反的,也就是说我们想要获得在给定范围内出现多次的值的列表,那么我们将使用UNIQUE函数,结合FILTER和COUNTIF函数:
UNIQUE (FILTER (range, COUNTIF (range, range)>1))
- 例如:要提取出单元格B2:B10中出现多次的不同名称,我们也可以使用此公式:
=UNIQUE (FILTER (B2:B10, COUNTIF (B2:B10, B2:B10)>1))
上述公式的工作原理
众所周知,在这个公式的核心,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}
这个特定的数组作为include参数被传递给FILTER函数,告诉函数要包含哪些相应的值在结果数组中:
{“Andrew”;”David”;”Andrew”;”Andrew”;”David”;”Andrew”;”David”}
我们可以注意到,只有与TRUE相对应的值才能有效地保留。
此外,上述数组转到UNIQUE函数的array参数中,去除重复项后高效地输出最终结果:
{“Andrew”;”David”}
注意:值得注意的是,同样地,我们可以轻松过滤掉出现两次或三次以上的唯一值。为此,我们可以相应地更改逻辑比较中的数字。
如何在Microsoft Excel中找到多列(唯一行)中的唯一值?
在这种特定情况下,当我们想要比较两个或多个列,并返回它们之间的唯一值时,我们可以将所有目标列都包含在array参数中。
例如,如果我们想要返回获奖者的唯一名字(列A)和姓氏(列B),那么我们将在单元格E2中输入这个公式:
=UNIQUE (A2:B10)
然后,我们将按下键盘上的Enter键以获得以下结果:
要获取唯一行,也就是具有在列A、B和C中值的唯一组合的条目,需要使用以下公式:
=UNIQUE(A2:C10)
如何在Excel中轻松获取按字母顺序排序的唯一值列表?
我们通常如何在Microsoft Excel中按字母顺序排序?就是通过使用Excel内置的功能,即排序或筛选。与此相关的问题是,我们每次选择的源数据更改时都需要重新排序,因为与Excel公式不同,这些功能必须手动重新应用。
此外,通过动态数组函数的引入,以上问题可以轻松解决。但我们需要做的只是将SORT函数直接应用于常规的UNIQUE公式,就像这样:
SORT (UNIQUE (array))
- 例如: 要提取列A至列C中的唯一值并将结果从A到Z排列,我们将使用以下公式:
=SORT (UNIQUE (A2:C10))
与上面的示例相比,输出结果更容易理解和处理。例如,我们可以看到安德鲁和大卫在两个不同的体育项目中都是赢家:
重要提示。 在这个例子中,我们通常是按照第一列的值从 A 到 Z 进行排序的,这是 SORT 函数的默认值;因此,可选的 sort_index 和 sort_order 参数被省略。
如何找出多列中的唯一值并将它们连接到一个单元格中?
在多列搜索时,Microsoft Excel 的 UNIQUE 函数默认将每个值输出到一个单独的单元格中。或许,我们会觉得将结果放在一个单元格中会更方便。
为了实现这个目标,我们可以使用“&”符号来连接列,并在它们之间放置所需的分隔符。
例如,我们将 A2:A10 中的名字列与 B2:B10 中的姓氏列连接起来,并使用空格分隔符:
=UNIQUE (A2:A10 &” “&B2:B10)
结果就是我们会在一个列中得到一个全名列表。
如何根据不同的条件获取唯一值列表?
为了提取带有条件的唯一值,我们可以同时使用Excel的UNIQUE和FILTER函数:
- FILTER函数限制了满足给定条件的数值。
- UNIQUE函数还将过滤后的列表中的重复项去除。
下面是筛选唯一值公式的通用版本:
UNIQUE(FILTER(array, criteria_range = criteria))
- 对于本例: 让我们获取特定体育项目的获奖者列表。首先,在某些单元格中输入感兴趣的体育项目,比如F1。然后,我们可以使用以下公式来获取唯一名称:
=UNIQUE(FILTER(A2:B10, C2:C10=F1))
A2:B10是用于查找唯一值的范围,C2:C10是检查条件的范围。
如何根据多个条件筛选唯一值?
要查找具有两个或更多条件的唯一筛选值,我们可以使用下面显示的表达式来分别构建FILTER函数所需的条件:
UNIQUE (FILTER (array, (criteria_range1 = criteria1) * (criteria_range2 = criteria2)))
公式的结果是一个唯一条目的列表,其中所有指定的条件都为TRUE。在Microsoft Excel中,这也称为AND逻辑。
为了看到这个公式的效果,让我们获取一个在G1(条件1)中获胜的运动员唯一列表,并且在G2(条件2)以下年龄:
使用A2:B10的范围作为数据源,C2:C10作为运动项目(条件范围1),D2:D10作为年龄(条件范围2),公式的形式如下:
=UNIQUE (FILTER (A2:B10, (C2:C10=G1) * (D2:D10 <G2)))
它返回了我们要查找的结果。
上述公式的工作原理
以下是该公式的逻辑的高层解释:
因此,在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值的数组。当这些数组相加时,具有一个或多个条件为TRUE的项目将具有一个值为1。所有条件都为FALSE的项目的值为0。因此,满足任何单个条件的任何条目都可以有效地进入传递给UNIQUE函数的数组中。
如何在Microsoft Excel中获取唯一值,忽略空白?
如果我们使用的数据集主要包含一些空白,使用常规公式获得的唯一列表可能会有一个空单元格或零值。这是因为Microsoft Excel的UNIQUE函数设计为返回范围中的所有不同值,包括空白。因此,如果我们的源范围中有零和空单元格,特定的唯一列表将包含2个零,一个代表空单元格,另一个代表零值。
此外,如果源数据包含由一些公式返回的空字符串,唯一列表还将包括一个看起来像空单元格的空字符串(“”):
而要获取没有空值的唯一值列表,那样的话,我们还需要进行以下操作:
- 使用FILTER函数筛选出空单元格和空字符串。
- 利用UNIQUE函数将结果限制为唯一值。
通用公式如下:
**UNIQUE (FILTER ( 范围, 范围 <>”)) **
此外,在本例中,单元格D2中的公式如下:
**=UNIQUE (FILTER (B2:B12, B2:B12 <>””)) **
Excel返回了一个没有空单元格的唯一名称列表作为结果:
如何在Excel中找到特定列的唯一值?
有时候,我们可能想从两个或多个列中提取唯一值,这些列通常不相邻。我们也可能希望在结果列表中重新排序这些列。这两个任务都可以通过使用CHOOSE函数来实现。
UNIQUE (CHOOSE({1, 2}, range1, range2))
假设我们从示例表中想要获取基于列A和列C中的值的获胜者列表,并按照以下顺序排列结果:首先是一项运动(列C),然后是运动员姓名(列A)。为了实现这个目标,我们可以按照以下方式构建公式:
=UNIQUE (CHOOSE({1, 2}, C2:C10, A2:A10))
将会得到以下结果: