太阳抱抱月亮 发表于 2021-12-26 23:16:00

多列筛选后的不重复计数问题

单列筛选后的不重复计数问题——
其中第一种计数方法在多列筛选时失效。
失效原因:
SUBTOTAL(3,OFFSET(B36,ROW(1:12),))和MATCH(B37:B48,B37:B48,)=ROW(1:12)相乘的计算方法
在单列筛选时,假设马鞍山没有隐藏,
SUBTOTAL(3,OFFSET(B36,ROW(1:12),))计算结果为马鞍山(1)..马鞍山(1)..马鞍山(1)。
MATCH(B37:B48,B37:B48,)=ROW(1:12)中则显示马鞍山(1)..马鞍山(0)..马鞍山(0),所以最终结果为1。
在多列筛选时,如果马鞍山第一次出现的地方被隐藏,
SUBTOTAL(3,OFFSET(B36,ROW(1:12),))计算结果为马鞍山(0)..马鞍山(1)..马鞍山(1)
MATCH(B37:B48,B37:B48,)=ROW(1:12)中则显示马鞍山(1)..马鞍山(0)..马鞍山(0),计算结果为0。
所以会出现图下结果。
方法二简单尝试后也不能给出正确答案。
求组大神给出在B、C甚至更多列筛选后,统计C列不重复工厂数的方法,尽量只是用公式和单元格。

华晓广告 发表于 2022-1-11 22:09:25

数组公式:
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))

(1)SUBTOTAL 得到 0,1数组
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))
(2)IF 得到非隐藏内容,隐藏的返回错误值,使得后面的MATCH匹配得到错误值
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))
(3)MATCH 匹配出现位置
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))
(4)IF 判断匹配位置是否第一次出现,第一次出现的返回数字,否则返回错误值
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))
(5)COUNT 计算数字的个数,也就是非重复数
=COUNT(IF(
MATCH(IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96,NA()),
IF(SUBTOTAL(3,OFFSET(C2,ROW(3:96)-2,0)),C3:C96),
0)
=ROW(3:96)-2,1,NA()))

杨美峰 发表于 2022-3-14 09:53:37

大佬真快,感谢
页: [1]
查看完整版本: 多列筛选后的不重复计数问题