计算已过滤列中的多less个不同值(或获取不同值的列表)
有没有一种方法来计算Excel中过滤列中不同值的数量?
使用公式https://exceljet.net/formula/count-unique-values-in-a-range-with-countif我可以计算一个范围内的不同值的数量,但是当该范围已经过滤自动过滤我仍然得到未经过滤的计数。
例如:
AB 1 Scarf Blue 2 Hat Red 3 Gloves Green 4 Coat Blue 5 Balloon Red 6 Shoes Blue
计算B =SUMPRODUCT((B1:B6<>"") / COUNTIF(B1:B6,B1:B6 & ""))
唯一值应该返回3
因为不同的值是Red
, Green
和Blue
。
如果我自动筛选列B只selectRed
项目,结果表将如下所示:
AB 2 Hat Red 5 Balloon Red
在这种情况下,返回的不同值的数量应该是1
。 但是上面的公式还是返回3
。
该公式还应该处理自动筛选器中的多个select,例如,对Blue
和Green
筛选应该导致下表:
AB 1 Scarf Blue 3 Gloves Green 4 Coat Blue 6 Shoes Blue
公式应该返回2
(蓝,绿)。
最后,如果我在列A
而不是B
上过滤,则公式应该仍然有效。 所以,如果我只对Hat
, Scarf
和Coat
感兴趣,那么对这些值进行过滤,将导致:
AB 1 Scarf Blue 2 Hat Red 4 Coat Blue
公式应该返回2
。
(我正在使用Excel 2013,需要在公式中执行此操作,而不是使用VBA等)
我也在office.com上find了这个页面 ,我想这可能会有所帮助,但是唉,我无法让它为我工作。
此参考显示如何使用AGGREGATE排除隐藏的行
用AGGREGATE排除隐藏的行
然后你可以使用一个标准的方法来计算这样的唯一值
使用FREQUENCY计算唯一值
所以,如果你在B列计数值,你需要一个帮助列(比如说C)
=IF(AGGREGATE(3,5,B2),B2,"")
然后插入忽略空单元的唯一计数forms
=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 & ""))