在 excel 中计算唯一值的 7 种方法
假设您有一个值列表,其中每个值都被输入多次。
现在…
您想要计算此列表中的唯一值,以便获取其中值的实际数量。
为此,您需要使用一种仅对值进行一次计数并忽略列表中所有其他出现次数的方法。
在 Excel 中,您可以使用不同的方法来获取许多唯一值。这取决于您拥有什么类型的值,因此您可以使用最佳方法。
在今天的文章中,我想与您分享 6 种不同的方法来计算唯一值,并根据您拥有的值的类型来使用这些方法。
高级过滤器获取唯一值的数量
使用高级过滤器是检查唯一值数量的最简单方法之一,您甚至不需要复杂的公式。这里我们有一个名称列表,您需要从该列表中计算唯一名称的数量。
以下是获取唯一值的步骤:
- 首先,选择列表中的一个单元格。
- 之后,转到“数据”选项卡➜“排序和过滤”➜单击“高级” 。
- 单击它后,您将看到一个弹出窗口以应用高级过滤器。
- 现在从此窗口中选择“复制到另一个位置”。
- 在“复制到”中,选择要在其中粘贴唯一值的空白单元格。
- 现在,选中“仅单个记录”框,然后单击“确定”。
- 此时您就有了一个唯一值的列表。
- 现在转到列表中最后一个单元格下方的单元格,插入以下公式,然后按 Enter。
=COUNTA(B2:B10)
它将返回此名称列表中唯一值的数量。
现在您有了一个唯一值的列表,并且您还可以对它们进行计数。此方法简单且易于遵循,因为您不需要为此编写任何复杂的公式。
组合 SUM 和 COUNTIF 来计算唯一值
如果要查找单个单元格中唯一值的数量而不提取单独的列表,可以使用 SUM 和 COUNTIF 的组合。
在此方法中,您只需要引用值列表,公式将返回唯一值的数量。这是一个数组公式,所以需要以表格的形式输入,输入时使用Ctrl+Shift+Enter。
公式是:
=SUM(1/COUNTIF(A2:A17,A2:A17))
当您以表格形式输入此公式时,它将如下所示。
{=SUM(1/COUNTIF(A2:A17,A2:A17))}
怎么运行的
要理解这个公式,您需要将其分为三个部分,只需记住我们以表格形式输入了这个公式,并且此列表中总共有 16 个值,不是唯一的而是总数。
好吧,那就看看吧。
在第一部分中,您使用 COUNIF 来计算从 16 开始的每个值的数量,这里 COUNTIF 返回如下所示的值。
在第二部分中,将所有值除以 1,返回这样的值。
假设如果某个值在列表中出现两次,则两个值都将返回 0.5,这样最后当您对其求和时,它将变为 1;如果某个值出现 3 次,则每个值都会返回 0.333。
并且,在第三部分中,您只需使用 SUM 函数将所有这些值相加,就得到了许多唯一值。
这个公式非常强大,可以帮助您获得单个单元格中的计数。
使用 SUMPRODUCT + COUNTIF 从列表中获取唯一值的计数
在上一个方法中,您使用了 SUM 和 COUNTIF 方法。但是,您也可以使用 SUMPRODUCT 代替 SUM。
而且,使用SUMPRODUCT时,您不需要以表格形式输入公式。只需编辑单元格并输入下面的公式即可。
=SUMPRODUCT(1/COUNTIF(A2:A17,A2:A17))
当您以表格形式输入此公式时,它将如下所示。
{=SUMPRODUCT(1/COUNTIF(A2:A17,A2:A17))}
怎么运行的
该公式的工作原理与您在上面的方法中学到的完全相同,区别只是您使用了 SUMPRODUCT 而不是 SUM。
SUMPRODUCT 可以在不使用 Ctrl+Shift+Enter 的情况下获取数组。
仅计算列表中唯一的文本值
现在,假设您有一个姓名列表,其中还有手机号码,并且您只想从文本值中计算唯一值。因此,在这种情况下,您可以使用以下公式:
=SUM(IF(ISTEXT(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))
当您以表格形式输入此公式时。
{=SUM(IF(ISTEXT(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))}
怎么运行的
在此方法中,您使用了 IF 和 ISTEXT 函数。 ISTEXT 首先检查所有值是否都是文本,如果有任何值是文本则返回 TRUE。
之后,IF 对所有具有 TRUE 的文本值应用 COUNTIF,而其他值保持为空。
最后,SUM 返回所有唯一文本值的总和,从而获得唯一文本值的数量。
获取列表中唯一号码的数量
如果您只想计算值列表中的唯一数字,则可以使用下面的公式。
=SUM(IF(ISNUMBER(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))
以表格形式输入该公式。
{=SUM(IF(ISNUMBER(A2:A17),1/COUNTIF(A2:A17, A2:A17),””))}
怎么运行的
在此方法中,您使用了 IF 和 ISNUM 函数。 ISNUMBER 首先检查所有值是否都是数字,如果是数字则返回 TRUE。
之后,IF 对所有具有 TRUE 的数值应用 COUNTIF,而其他值保持为空。
最后 SUM 返回所有唯一值(数字)的总和,从而获得唯一数字的数量。
使用UDF计算唯一值
这里我有VBA(UDF) ,它可以帮助您计算唯一值,而无需使用任何类型的公式。
Function CountUnique(ListRange As Range) As Integer Dim CellValue As Variant Dim UniqueValues As New Collection Application.Volatile On Error Resume Next For Each CellValue In ListRange UniqueValues.Add CellValue, CStr(CellValue) ' add the unique item Next CountUnique = UniqueValues.Count End Function
通过插入新模块来将此函数输入到您的 VBE 中,然后转到电子表格并插入以下公式。
=CountUnique(range)
获取 Excel 文件
结论
在处理大型数据集时,计算唯一值会很有帮助。
您此处使用的名称列表有重复的名称,在计算唯一编号后,我们发现列表中有 10 个唯一名称。
好吧,您在这里学到的所有方法在不同情况下都是有用的,您可以使用您认为最适合您的方法中的任何一种。
如果你问我,高级过滤器和 SUMPRODUCT 是我最喜欢的方法,但现在你必须告诉我:
哪一个是你的最爱?
请在评论部分与我分享您的观点,我很乐意听取您的意见,并且不要忘记与您的朋友分享此技巧。