1 小心特例 frenquce
会划分为n+1个区间
=SUMPRODUCT(IF(FREQUENCY(B5:B18,B5:B18)>0,1,0)*IF(VALUE(MID(A5:A18,6,1))=5,1,0))
2 用0/ 和1/0 +数组公式来解决问题
=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报错
技巧核心
熟悉
行列式运算,
揭秘 1/() 0/()
一般是要么查找
要么查找不重复的个数,可以多条件
多个条件一般是 相乘的关系
矩阵运算
但是有些地方故意利用0
比如
=IFERROR(LOOKUP(1,0/(COUNTIF(B$5:B5,B$5:B$18)=0),B$5:B$18),"")
故意让0/0得出错的
0/1 就是想要的数据
所以也可以改成 0/2都行
用if 才能变成数组
数组的技巧
上面这些写法无法形成数组,
而想输出数组,除了用数组公式3个键,还得把 单参数得地方,也写成1个数组
看这里,用countif() 生成1个数组,而不只是1个结果
怎么操作
1 前面range,还是根据需要设定
2 后面的 查找标准criteria,需要从1个数,变成1个数组‘
3 且要按三键
这2个虽然, 查找标准criteria1个数组,没有if还是不行
加了if 就开始做了逐个处理
=COUNTIF(B$5:B5,B$5:B$18)
=0/COUNTIF(B$5:B5,B$5:B$18)
=IF(0/COUNTIF(B$5:B5,B$5:B$18)=1,1,0)
=IF(0/COUNTIF(B$5:B5,B5:B18)=1,1,0)