工作中,不重复计数的问题经常会出来,遇到就很头痛,因为使用的公式较为复杂,需要使用sum+countifs函数组合公式来解决,并且理解起来也偏困难。
1、单条件不重复计数例如,我们在打卡地点如下,需要快速统计出打卡地点有多少个
因为要不重复计数,所以我们需要使用的公式是:
=SUM(1/COUNTIFS(B2:B9,B2:B9))
其中运用的原理很简单
比如,有N个不重复的数据,分别出现a,b,c...N次
那我们得到的结果就是
1/a*a+1/b*b+1/c*c+...1/N*N
所以不管abc是什么值,每一项都是数字1,最终得到的结果就是N
2、多条件不重复计数如果我们现在要统计,不同员工的打卡地点数是多少
例如,吕布有3条记录,但是打卡地点只有2个,杭州和长沙,需要得到结果是2
遇到多条件不重复计数,有一个通用的可套用的公式:
=sum(if(条件列=条件值,1/countifs(条件列,条件值,计数列,计数列),0))
所以这里套进去,公式是:
=SUM(IF($A$2:$A$9=D2,1/COUNTIFS($A$2:$A$9,D2,$B$2:$B$9,$B$2:$B$9),0))
还是有点复杂的。
3、新公式Filter+unique+counta自由组合在面对单条件不重复计数时,如果我们使用
=UNIQUE(B2:B9)
它会提取出来不重复的数据
所以单条件计数,只需要输入公式:
=COUNTA(UNIQUE(B2:B9))
面对多条件不重复计数时,我们可以加一个Filter筛选
=COUNTA(UNIQUE(FILTER(B:B,A:A=D2)))
先把当前员工的信息筛选出来,再去重,最后计数
但是也有一个bug,例如刘备,在左边表格里面根本没有打卡地点,理论上是0的,但用上述公式得到的结果是1,那是因为Filter筛选为空时,会报错,用counta函数对错误值计数时也会显示1
如果我们可以结合countifs直接对员工计数的这个值,是没有去重的,但是它能检验出数字0时,肯定打卡的地点也是0
所以我们两个公式结合一下,最终输入的公式是:
=MIN(COUNTIFS(A:A,D2),COUNTA(UNIQUE(FILTER(B:B,A:A=D2))))
轻松得到了多条件不重复计数的结果
关于这个小技巧,你学会了么?动手试试吧!