有没有办法计算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
,因为不同的值为Red
,Green
和Blue
。
如果我自动过滤B列只选择Red
项,结果表将如下所示:
A B
2 Hat Red
5 Balloon Red
在这种情况下,重新调整的不同值的数量应为1
。但上面的公式仍然会返回3
。
该公式还应该处理自动过滤器中的多项选择,因此例如,Blue
和Green
的过滤应该会产生下表:
A B
1 Scarf Blue
3 Gloves Green
4 Coat Blue
6 Shoes Blue
公式应从中返回2
(蓝色,绿色)。
最后,如果我在列A
而不是B
上进行过滤,则该公式仍应有效。因此,如果我只对Hat
,Scarf
和Coat
感兴趣,则对这些值进行过滤列A
会导致:
A B
1 Scarf Blue
2 Hat Red
4 Coat Blue
公式应从中返回2
。
(我使用Excel 2013并且需要在公式中执行此操作而不是使用VBA等)
我还在office.com上找到了this page,我觉得这可能会有所帮助,但是唉,我无法让它为我工作。
答案 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 & ""))