我是【】,诚挚地邀请您关注我的账号,在这里,每一天都将为您带来职场办公软件使用的实用技巧与干货分享!
——首发于微信号:
今日,我要与大家探讨的是如何对查询结果进行有效的非空计数。以下是一个直观的示例,左侧展示的是部门员工值班表格,而右侧则是根据部门筛选后显示的每个部门的值班人数统计。需要注意的是,由于同一人可能多次值班,我们在进行人数统计时,必须首先剔除重复的记录。
面对这样的场景,许多朋友可能会采用以下方法:
在目标单元格中输入以下公式: =COUNTA(UNIQUE(FILTER(C:C,B:B=F2))) 按下回车键,然后向下拖动填充数据。
公式解析: 该公式首先运用FILTER函数筛选出与“部门”列中F2单元格相匹配的值班员工名单;接着通过UNIQUE函数移除重复的员工姓名;最后,COUNTA函数用来计算非空单元格的数量。
特别提醒: 尽管上述公式在逻辑上看似合理,但它存在一个显著的缺陷。如果无法找到符合条件的数据,FILTER函数将返回错误值,而COUNTA函数在统计时也会将这个错误值计算在内,导致统计结果不准确。例如,如果没有【人事部】的值班员工,统计结果却显示为1,而实际上应该是0。
针对这一应用场景,我们可以采取以下两种简便的方法来解决这个问题,确保筛选结果的非空计数准确无误:
方法一: 在目标单元格中输入以下公式: =IF(COUNTIF(B:B,F2)=0,0,COUNTA(UNIQUE(FILTER(C:C,B:B=F2)))) 按下回车键,然后向下拖动填充数据。
公式解析: 这个公式通过IF函数先判断是否存在符合条件的数据。如果COUNTIF(B:B,F2)=0,说明没有找到数据,那么结果就返回0;否则,继续使用COUNTA函数对筛选结果进行非空计数。
方法二: 在目标单元格中输入以下公式: =SUMPRODUCT((UNIQUE(FILTER(C:C,B:B=F2,0))0)*1) 按下回车键,然后向下拖动填充公式。
公式解析: ① 公式中UNIQUE(FILTER(C:C,B:B=F2,0))的作用是根据“部门”名称查找对应的值班员工名单,并去除重复值。如果找不到对应值,则返回0。 ② UNIQUE(FILTER(C:C,B:B=F2,0))0作为一个判断条件,当返回值不为0时,会产生一组逻辑值TRUE,对应不重复的姓名数量;如果返回值为0,则产生逻辑值FALSE,表示没有找到符合条件的数据。 ③ 由于逻辑值TRUE和FALSE不能直接参与数值运算,因此我们将它们乘以1,将逻辑值转换为数值。逻辑值TRUE等同于1,逻辑值FALSE等同于0,乘以1后形成一组由1和0组成的数组,最后通过SUMPRODUCT函数求和,得到准确的员工人数。
以上就是【】今天的干货分享。如果您觉得这些内容对您有所帮助,请不要吝啬您的点赞支持。如果您有任何疑问,欢迎关注并留言,期待与您的每一次互动,共同在职场技能的道路上不断成长!