代码之家  ›  专栏  ›  技术社区  ›  nicomp

如何统计单元格内容的出现次数?

  •  -4
  • nicomp  · 技术社区  · 6 年前

    我有一个杂乱无章的细胞范围内反复出现的内容。我需要知道每一个独特的内容出现的频率。我要怎么去?

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  2
  •   Samuel Hulla    6 年前

    为什么不是一个简单的公式?

    假设你的射程是 C1:H3 第一次 要签入的值 C6

    =COUNTIF($C$1:$H$3, C$6)
    

    会产生预期的结果

        2
  •  2
  •   Chris Walker    6 年前

    虽然只要要检查的值已知并包含在第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 .

    推荐文章