我尝试过使用数据透视表和SUMPRODUCT&查看可能的解决方案之后的COUNTIF公式,但尚未找到任何积极的方法。以下是输入数据:
Level 1 Level 2 Level 3 Level 4 Level 5
Tom Liz
Tom Liz Mel
Tom Liz Dan
Tom Liz Dan Ian
Tom Liz Dan Ken
Tom Tim
Tom Tim Fab
Tom Tim Fab Ken
Tom Tim Fab Ken Jan
Eve
预期输出数据如下。目的是不必输入预先加载的名称列表。期望是程序可以仅根据输入数据确定计数:
Counts
-------
Tom: 9
Eve: 1
Liz: 5
Tim: 4
Mel: 1
Dan: 3
Fab: 3
Ian: 1
Ken: 3
Jan: 1
对此有任何帮助表示赞赏....谢谢!
更新:带有名称列表的预加载列表可用于生成计数。以上描述已相应更新。
答案 0 :(得分:1)
首先在标准模块中输入以下 UDF :
Public Function ListUniques(rng As Range) As Variant
Dim r As Range, ary(1 To 9999, 1 To 1) As Variant
Dim i As Long, C As Collection
Set C = New Collection
On Error Resume Next
For Each r In rng
v = r.Value
If v <> "" Then
C.Add v, CStr(v)
End If
Next r
On Error GoTo 0
For i = 1 To 9999
If i > C.Count Then
ary(i, 1) = ""
Else
ary(i, 1) = C.Item(i)
End If
Next i
ListUniques = ary
End Function
然后点亮列的一部分,例如 G1 通过 G50 并输入数组公式:
=listuniques(A2:E11)
必须使用 Ctrl + Shift + 输入输入数组公式,而不仅仅是 Enter key。
如果操作正确,您应该看到类似的内容:
最后在 H1 中输入:
=COUNTIF($A$2:$E$11,G1)
并复制
注意强>
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
= myfunction的(A1)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关UDF的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其生效!