计算过滤列中有多少个不同的值(或获取不同值的列表)

时间:2017-01-11 12:47:44

标签: excel

有没有办法计算Excel中过滤列中不同值的数量?

使用https://exceljet.net/formula/count-unique-values-in-a-range-with-countif处的公式我可以计算范围内不同值的数量,但是当使用自动过滤器过滤了该范围时,我仍然可以获得未过滤的数量。

例如:

     A          B
1    Scarf      Blue
2    Hat        Red
3    Gloves     Green
4    Coat       Blue
5    Balloon    Red
6    Shoes      Blue

使用=SUMPRODUCT((B1:B6<>"") / COUNTIF(B1:B6,B1:B6 & ""))计算B中的唯一值应返回3,因为不同的值为RedGreenBlue

如果我自动过滤B列只选择Red项,结果表将如下所示:

     A          B
2    Hat        Red
5    Balloon    Red

在这种情况下,重新调整的不同值的数量应为1。但上面的公式仍然会返回3

该公式还应该处理自动过滤器中的多项选择,因此例如,BlueGreen的过滤应该会产生下表:

     A          B
1    Scarf      Blue
3    Gloves     Green
4    Coat       Blue
6    Shoes      Blue

公式应从中返回2(蓝色,绿色)。

最后,如果我在列A而不是B上进行过滤,则该公式仍应有效。因此,如果我只对HatScarfCoat感兴趣,则对这些值进行过滤列A会导致:

     A          B
1    Scarf      Blue
2    Hat        Red
4    Coat       Blue

公式应从中返回2

(我使用Excel 2013并且需要在公式中执行此操作而不是使用VBA等)

我还在office.com上找到了this page,我觉得这可能会有所帮助,但是唉,我无法让它为我工作。

1 个答案:

答案 0 :(得分:1)

此参考显示如何使用AGGREGATE

排除隐藏的行

Excluding hidden rows with AGGREGATE

然后,您可以使用标准方法来计算像这样的唯一值

Counting unique values with FREQUENCY

因此,如果您计算B列中的值,则需要包含

的辅助列(例如C)
=IF(AGGREGATE(3,5,B2),B2,"")

然后插入忽略空单元格的唯一计数形式

=SUM(IF(FREQUENCY(IF(LEN(C2:C10)>0,MATCH(C2:C10,C2:C10,0),""), IF(LEN(C2:C10)>0,MATCH(C2:C10,C2:C10,0),""))>0,1))

如果您愿意,可以使用

=SUMPRODUCT((C2:C10<>"") / COUNTIF(C2:C10,C2:C10 & ""))