7

我在这个网站和网上四处寻找这个问题的答案,但我还没有成功,所以我会在一个新线程中提问。

我需要能够使用公式(或多个公式)计算 Excel 中每个类别的特定文本的出现次数。最好这可以在不使用 VBA 的情况下完成,但如果有必要,我将尝试编写 VBA 命令。

这是我正在使用的内容:

Cat.    Word
A       doo
A       foo
A       foo
A       loo
B       loo
B       goo
B       loo
A       roo
A       lol
B       rar
C       goo
...      ...

我想要一个公式来计算每个类别中每个单词的唯一出现次数。这些类别是已知的和有限的,并且包含在我的 Excel 工作表中的列表中,但是这些单词可以是任意数量并且是未知的。每个类别都可以包含其他类别的单词,最终结果应如下所示:

Cat.    Count of distinct ocurrences per category
A       5
B       3
C       1

最后,我知道我可以对列表进行重复数据删除,但我想保持列表完整以用于存档目的,因此不需要重复数据删除的计数将是理想的。

这是我试图做的,但最终没有奏效:

=IF(A:A=C1,SUM(IF(FREQUENCY(MATCH(B1:B11,B1:B11,0),MATCH(B1:B11,B1:B11,0))>0,1)))

非常感谢你的帮助!

4

4 回答 4

4

试试这个“数组公式”

=SUM(IF(FREQUENCY(IF(A$1:A$11=C1,IF(B$1:B$11<>"",MATCH(B$1:B$11,B$1:B$11,0))),ROW(B$1:B$11)-ROW(B$1)+1),1))

确认CTRL+SHIFT+ENTER

其中 C1 是第一个要计算的类别。向下复制所有类别的公式

解释

该公式的基本思想是,第一个IF是“过滤器”,以确保您仅在 A 值 = C1 时查看 B 值,第二个IF过滤掉 B 中的空白,否则MATCH给出该值的第一个匹配项的位置在 B 中(因此为相同的值给出相同的数字)

的结果IFs是函数的第一部分FREQUENCY。中的“箱”FREQUENCYROW-ROW+1部分形成,它为您提供了一个从 1 到 n 的数字范围,这将涵盖MATCH可能给出的整个值范围。

现在我们只需要计算IFs 返回的不同数字的数量(因为这将等于 B 中不同值的数量作为您的标准),因此公式中的最后一个 1 分配给每个非零值FREQUENCY并将结果相加。

详细说明您的示例 where C1 = A 这部分

=IF(A$1:A$11=C1,IF(B$1:B$11<>"",MATCH(B$1:B$11,B$1:B$11,0)))

导致这个数组

{1;2;2;4;FALSE;FALSE;FALSE;8;9;FALSE;FALSE}

FALSE 值 where col A <> "A" 否则MATCH为每个值给出第一个匹配的位置的数字 - 注意 2 出现两次,因为 foo 出现两次,首先在第 2 行

ROW(B$1:B$11)-ROW(B$1)+1部分为您提供了这个数组

{1;2;3;4;5;6;7;8;9;10;11}

所以现在公式看起来像这样

=SUM(IF(FREQUENCY({1;2;2;4;FALSE;FALSE;FALSE;8;9;FALSE;FALSE},{1;2;3;4;5;6;7;8;9;10;11}),1))

因此FREQUENCY将第一个数组中的值放入相关的“bins”中,公式现在解析为

=SUM(IF({1;2;0;1;0;0;0;1;1;0;0;0},1))

请注意,数组返回的FREQUENCY总和为 6(六行,值为“A”),但只有 5 个非零数字,表示标准“A”的五个不同值。

现在最后一个 IF 为每个非零值返回 1,SUM函数将它们相加得到 5

于 2012-10-08T18:12:08.340 回答
4

就个人而言,我更喜欢使用Pivot Tables来做到这一点。对于比偶尔的电子表格更大的任何东西,Microsoft Access 或其他数据库中的 SQL 查询赢得了比赛。

于 2012-10-08T19:37:46.463 回答
2

我也一直在为此烦恼。我在这方面找到的最简单的解决方案是数据透视表和单个公式的组合。

  1. 创建数据透视表
  2. 放猫。在列标签中
  3. 将 Word 放在行标签中
  4. 把话语放在价值观中
  5. B2在具有范围和减法 1的单元格中使用计数公式B5:B100000(对于数据透视表下方的总计:

    =COUNT(B5:B100000)-1

这有多容易?

于 2013-03-29T20:36:24.747 回答
1

简单的方法 - 只需在插入 Pivot 时选择数据模型选项,然后从值字段中选择不同的值选项。你完成了。

于 2016-07-19T06:20:27.487 回答