要计算 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。由于不允许除以零,我们会抛出错误。