1 目标问题:想筛选出(在a列月份为5)且不重复的b列数据有几个
有2个条件
查找第1列月份为5月的并且第2列不重复的数据个数
方法1:用加辅助列+简单公式的办法
其实逻辑是更清晰的,就是显得步骤繁琐
第1个辅助列1,查找日期中的月份,具体用month() 等解决第2个辅助列,查找B列不重复的数据,具体用=IF(COUNTIF(B$5:B5,B5)=1,1,0) 来解决,如果重复就标记为0,不重复则标准为1,这个技巧就是主义,让范围是逐步从前1个---变为前2个---变为前3个---等等记住: 不是从全列查询,这样重复的就1次都无法记了,而是需要锁住列的上限,逐渐扩大列的范围
方法2:辅助列+数据透视表(有的版本解决不了重复值的问题)
仍然需要辅助列,月份汇总值一般默认都是求和,但是这里不能用求和需要调整汇总值,点击它会弹出菜单,选择计数而不是求和有的版本有唯一计数,有的版本,数据透视表无法去重方法3 用数组公式来解决
我自己改良的函数
=SUMPRODUCT(1/(COUNTIF(B5:B18,B5:B18)*IF(VALUE(MID(A5:A18,6,1))=5,1,99999999)))用数组公式,这个必须是数组公式行列数的思想看待数组多个条件需要用乘法月份5的条件要设计为999999,为是为了1/999999 等于极小数约等于0
1 网上大多数答案,都是查找本列的不重复个数
比如这种公式
=SUMPRODUCT(1/COUNTIF(B5:B18,B5:B18))
2 而复杂情况,可能是需要根据其他列的查,比如本文要解决的问题
=SUMPRODUCT(1/COUNTIF(B5:B18,B5:B18))
这个只返回了B列里不重复的数据个数,确实是10个
=SUMPRODUCT(1/(COUNTIF(B5:B18,B5:B18)*IF(VALUE(MID(A5:A18,6,1))=5,1,99999999)))
这个返回了B列里不重复的数据个数 且 月份=5的,个数是5个
不能用这个错误写法
=SUMPRODUCT(1/(COUNTIF(B5:B18,B5:B18)*IF(VALUE(MID(A5:A18,6,1))=5,1,99999999)))
=SUMPRODUCT(1/(COUNTIF(B5:B18,B5:B18)*IF(VALUE(MID(A5:A18,6,1))=5,1,0))) 这样就会报错,因为1/0报错