我已经浏览了这个网站并在网上找到了这个问题的答案,但我还没有成功,所以我会在新的帖子中提问.
我需要能够使用公式(或多个公式)计算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
... ...
Run Code Online (Sandbox Code Playgroud)
我想有一个公式,计算每个类别每个单词的唯一出现次数.这些类别是已知的和有限的,并且包含在我的Excel工作表中的列表中,但这些单词可以是任何数量且不知道.每个类别都可以包含其他类别的单词,最终结果应该如下所示:
Cat. Count of distinct ocurrences per category
A 5
B 3
C 1
Run Code Online (Sandbox Code Playgroud)
最后,我知道我可以对列表进行重复数据删除,但我希望保留列表完整性以便存档,因此不需要重复数据删除的计数将是理想的.
这是我试图做的,但最终没有奏效:
=IF(A:A=C1,SUM(IF(FREQUENCY(MATCH(B1:B11,B1:B11,0),MATCH(B1:B11,B1:B11,0))>0,1)))
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助!
试试这个“数组公式”
=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
。中的“bin”由ROW-ROW+1FREQUENCY
部分组成,它为您提供 1 到 n 的数字范围,其中包含可能给出的整个值范围。MATCH
现在我们只需要计算 s 返回的不同数字的数量IF
(因为这将等于 B 中不同值的数量),因此公式中的最后一个 1 被分配给中的每个非零值FREQUENCY
并对结果求和。
详细说明您的示例,其中 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 值,其中 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
将第一个数组中的值放入相关的“容器”中,公式现在解析为
=SUM(IF({1;2;0;1;0;0;0;1;1;0;0;0},1))
请注意,返回的数组总和FREQUENCY
为 6(值为“A”的六行),但只有 5 个非零数字,表示标准“A”的五个不同值。
现在最后一个 IF 为每个非零值返回 1,SUM
函数将这些值相加得到 5
归档时间: |
|
查看次数: |
40703 次 |
最近记录: |