举个例子,左边是员工的打卡时间和打卡地点明细数据,现在我们需要统计每位员工当月的打卡天数和打卡地点个数
因为一名员工,可能在一天内多次打卡,但是这只能算一天,如何快速计算出天数
如果我们要找到张飞的打卡天数及地点数,我们首先,肯定会对原始数据进行筛选出张飞的数据
然后会对打卡时间进行筛选,它有2个值,打卡地点,也是不重复的只有2个值。
如果一个个手动的去查找,那肯定效率极低,而且容易出错
这两个公式的计算过程,其实和手动计算的过程一模一样
首先Filter公式是用来筛选的,我们输入公式:
=FILTER(B:B,A:A=E2)
表示筛选B列的结果,条件是A列的值,等于A2
筛选出来了3个日期数据
我们要把日期数据去除重复值,这个时候,就用到了UNIQUE公式了
在外面套用一样,使用公式:
=UNIQUE(FILTER(B:B,A:A=E2))
这样就得到了张飞,打卡的不重复的日期
那我们直接进行计数就可以了,套用一个COUNTA公式:
=COUNTA(UNIQUE(FILTER(B:B,A:A=E2)))
按照同样的思路,我们可以把打卡地点数也统计出来,输入的公式是:
=COUNTA(UNIQUE(FILTER(C:C,A:A=E2)))
上面的计算逻辑,看起来没有问题,但实现上是有漏洞的,比如说
员工刘备,其实根据没有打卡时间和打卡地点,计算的结果却都是1
也就是COUNTA+UNIQUE+FILTER公式组合,如果数据为0的时候,结果也会显示为1
解决BUG方法
如果筛选的是数值型数据,例如日期/数字等,打卡天数的计算,我们需要使用公式:
=SUM(--ISNUMBER(UNIQUE(FILTER(B:B,$A:$A=$E2))))
如果是文本类型,例如打卡地点,我们需要使用公式:
=SUM(--ISTEXT(UNIQUE(FILTER(C:C,$A:$A=$E2))))
联系客服