查找符合条件,且不重复的数据
1 目标问题
- 查找第1列,月份为5月,并且第2列不重复的数据个数
- 有2个条件
有的版本有唯一计数,有的没有
2 比较简单的方法
2.1 加辅助列,简单公式,其实逻辑是更清晰的
这里主要用 find() 查找时间里的 "/" 出现了问题
可以尝试用其他符合 比如 . 替换 / 后再find() 可以查
这里其实月份已经错了,11,12月现实为1月
从上往下,不重复时就标记1,重复就标记0
记住: 不是从全列查询,这样重复的就1次都无法记了
而是需要锁住列的上限,逐渐扩大列的范围
2.2 其实最方便的是,数据透视表和更新
1 需要辅助列,月份
2 需要调整汇总值,点击它,选择计数而不是求和,默认不是
3 数据透视表无法去重
3 用公式解决
3.1
365的公式?
subtotal
SUMPRODUCT(1/(COUNTIFS(A2:A10000,O2:O10000)))
3.2
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报错
但是有些地方故意利用0
比如
=IFERROR(LOOKUP(1,0/(COUNTIF(B$5:B5,B$5:B$18)=0),B$5:B$18),"")
故意让0/0得出错的
0/1 就是想要的数据
所以也可以改成 0/2都行
技巧核心
熟悉
行列式运算,
揭秘 1/() 0/()
一般是要么查找
要么查找不重复的个数,可以多条件
多个条件一般是 相乘的关系
矩阵运算
小心特例 frenquce
会划分为n+1个区间
=SUMPRODUCT(IF(FREQUENCY(B5:B18,B5:B18)>0,1,0)*IF(VALUE(MID(A5:A18,6,1))=5,1,0))
一个奇怪问题
日期斜线替换 |
mid 查不到特征就用个数Z? |
+++ EXCEL的数组公式
用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)