2012-10-08 85 views
7

我已经浏览了此网站和在线获得对此问题的答案,但我还没有成功,因此我会在新线程中提问。如何在Excel中计算每个类别的唯一值

我需要能够使用公式(或一些公式)计算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))) 

非常感谢你的帮助!

+0

你是否在寻找公式来计算唯一值(http://office.microsoft.com/en-us/excel-help/count-occurrences-of-values-or-unique-values-in-a-data -range-HP003056118.aspx) –

回答

2

尝试此 “阵列式”

=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是“过滤器”,以确保仅看B值,如果A值= C1,第二IF过滤掉坯料在B,否则MATCH给人的第一匹配的用于在B中的值(从而使对于相同的值的相同数目)

IFs的结果是FREQUENCY功能的第一部分的位置。 FREQUENCY中的“bin”由ROW-ROW + 1部分组成,它给出了一系列数字1到n,它们将涵盖MATCH可能给出的整个值范围。

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

详细地为您的实例,其中C 1 = 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值,其中柱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”的五个不同值。

现在最后。如果每个非零值,则返回1和SUM功能总结那些得到5

+0

工作正常!我会仔细看看你给我的公式,如果我不明白某些东西,我会提问;我希望能够自己使用这些公式。非常感谢! – Luchadeer

+0

这可能有点多问,但你能简单地解释一下你在那里做了什么吗?我知道第二个'IF'看起来是否为'C1',那么只有当任何一个rowns不是空白时('IF(B $ 1:B $ 11 <>“”,...'), 。但是,我很困惑在那里的'ROW'功能。无论哪种方式,非常感谢,这工作 – Luchadeer

+0

我在我的答案张贴解释..... –

4

个人而言,我更喜欢使用Pivot Tables做。对于大于偶尔的电子表格的任何事情,Microsoft Access或其他数据库中的SQL查询都会赢得游戏。

2

我一直在为此付出沉重的代价。我在这发现的最简单的解决方案是一个数据透视表和一个公式的组合。

  1. 创建数据透视表
  2. 戴上猫。在列标签
  3. 将Word中的行中的标签
  4. 把这个词在值
  5. 使用计数式细胞B2与范围B5:B100000和。减去1(用于枢轴表下方的总计:

    =COUNT(B5:B100000)-1

有多容易呢?

1

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