计算范围内唯一的非空白条目

Count unique non-blank entries in a range

我在 Excel 中有这样的数据:

Person1    A    A    B    A         C    3
Person2                                  0
Person3    A    B    C    D    E    F    6
Person4              A    A    A         1

我试图找到一个公式来复制每行最后一个单元格中的数字,即与该人关联的唯一元素的数量,不包括空白。因此,例如 Person1 有 3,因为即使有三个 A,也有 A、B 和 C。每个人的列数都是固定的/相同的。值 A、B、C 等是字符串(与数字相反)。

这可以使用公式来完成吗?

这是我发现的:

=SUMPRODUCT(1/COUNTIF(B1:F1,B1:F1&""))

它的工作方式非常有趣:

它对 countifs 的结果求和,并将每个结果除以 1.Thus,如果你有上面的例子,它 returns 4,因为它求和:

1/1 + 1/3 + 1/3 + 1/1 + 1/3 + 1/3

这应该适合你:

=SUMPRODUCT((B1:G1<>"")/COUNTIF(B1:G1,B1:G1&""))

在 sheet

中使用的 UDF
Public Function GetUniqueCount(ByVal rng As Range) As Long
    Dim dict As Object, currCell As Range
    Set dict = CreateObject("Scripting.Dictionary")
    For Each currCell In rng
        If Not IsEmpty(currCell) Then dict(currCell.Value) = 1
    Next currCell
    GetUniqueCount = dict.Count
End Function

在sheet中使用: