答案 0 :(得分:2)
为什么不是一个简单的公式?
假设您的范围是
中C1:H3
,第一个 检查值位于C6
=COUNTIF($C$1:$H$3, C$6)
将产生预期的结果
答案 1 :(得分:2)
尽管接受的答案肯定会产生预期的结果,只要知道要检查的值并将其包含在第6行中,我认为就需要一个宏,因为这些值是未知的。
我会遍历整个范围,并且如建议的那样,使用脚本字典来跟踪唯一值。您还可以使用字典来保留每个值的每个实例的计数。如果使用字典,我认为不需要Countif()。
Dim wc As Object
Set wc = CreateObject("Scripting.Dictionary")
For Each cell In Selection
If cell.Value <> "" Then
wc(cell.Value) = wc(cell.Value) + 1
End If
Next
之所以可行,是因为VBA将添加一个密钥并将其值初始化为0(如果还不存在)。然后,您可以遍历字典,在一行中吐出键,在另一行吐出值。
这与预期结果不同的唯一方法是不会对键进行排序,但是按键对字典进行排序是Covered elsewhere。