【问题标题】:How to count the occurrences of cell contents?如何计算单元格内容的出现次数?
【发布时间】:2020-07-08 19:23:36
【问题描述】:

我的单元格范围参差不齐,内容重复出现。我需要知道每个独特内容出现的频率。我如何到达我需要去的地方?

【问题讨论】:

  • =Countif(C1:H3, "A") 会给你2。对每个不同的字母执行此操作,您将拥有自己的桌子。
  • 我不知道数据集中的字母。
  • 听起来你需要为此编写一些 VBA。然后你可以使用 Countif() 解决方案。
  • @JNevill 因此问题上的标签。 :)
  • 基本上你有两个问题需要解决 1)如何从一个范围内获取不同的值 2)如何获取该范围内这些不同值的计数。对于不同的值:您可以遍历For Each rngCell in Range("C1:H3") 范围内的每个单元格并使用scripting dictionary to identify unique values 然后将它们吐回工作表和countif()。还可以选择使用该问题的另一个答案中提到的 AdvacedFilter。

标签: excel vba


【解决方案1】:

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

【讨论】:

  • 酷!我非常喜欢它。
【解决方案2】:

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

假设你的范围是C1:H3and 第一个 检查值在C6

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

会产生预期的结果

【讨论】:

  • 完美!谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2022-01-02
  • 1970-01-01
  • 2021-09-10
相关资源
最近更新 更多