计算范围内唯一的非空白条目
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中使用:
我在 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
中使用的 UDFPublic 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中使用: