我有一个 .xls
文件,其中有一列包含一些数据。如何计算有多少个唯一值包含此列?
我在谷歌上搜索了很多选项,但他们给出的公式总是给我错误。例如,
=INDEX(List, MATCH(MIN(IF(COUNTIF($B$1:B1, List)=0, 1, MAX((COUNTIF(List, "<"&List)+1)*2))*(COUNTIF(List, "<"&List)+1)), COUNTIF(List, "<"&List)+1, 0))
返回
最佳答案
计算 A2:A100 中不同值的数量(不计算空白):
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))
复制自 @ Ulli Schmid 的回答至 What is this COUNTIF() formula doing? :
=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))
对 A1:A100 内的唯一单元格进行计数,排除空白单元格和带有空字符串 ("") 的单元格。
它是如何做到这一点的?示例:
A1:A100 = [1, 1, 2, "apple", "peach", "apple", "", "", -, -, -, ...]
then:
A1:A100&"" = ["1", "1", "2", "apple", "peach", "apple", "", "", "", "", "", ...]
因此需要这个&""将空白单元格(-)转换为空字符串("")。如果您直接使用空白单元格进行计数,则 COUNTIF() 返回 0。使用该技巧,“”和 - 都会被计数为相同的:
COUNTIF(A1:A100,A1:A100) = [2, 2, 1, 2, 1, 2, 94, 94, 0, 0, 0, ...]
but:
COUNTIF(A1:A100,A1:A100&"") = [2, 2, 1, 2, 1, 2, 94, 94, 94, 94, 94, ...]
如果我们现在想要获取所有唯一单元格的计数(不包括空白和“”),我们可以除以
(A1:A100<>""), which is [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, ...]
通过我们的中间结果 COUNTIF(A1:A100,A1:A100&""),并对这些值进行求和。
SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))
= (1/2 + 1/2 + 1/1 + 1/2 + 1/1 + 1/2 + 0/94 + 0/94 + 0/94 + 0/94 + 0/94 + ...)
= 4
我们是否使用了 COUNTIF(A1:A100,A1:A100)
而不是COUNTIF(A1:A100,A1:A100&"")
,那么其中一些 0/94 将是 0/0。由于不允许除以零,因此我们会抛出错误。
关于excel - 在 Excel 中计算列中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586815/