在日常工作中,我们经常需要核对两份名单。比如有一份全员名单,还有一份已签到或已报名名单,现在想快速找出哪些人没有出现。手动一个个比对太费时,用FILTER和COUNTIF函数组合,一个公式就能搞定。
一、场景说明
如下图所示,A列是全部人员姓名(A2:A23),C列是已经签到的人员姓名(C2:C10)。现在需要在E列提取出没有在C列出现过的姓名。(也就是未签到的姓名)。
二、公式写法
在E2单元格输入以下公式,按回车:
=FILTER(A2:A23, COUNTIF(C2:C10, A2:A23)=0)
三、公式拆解
- COUNTIF(C2:C10, A2:A23):依次统计A2:A23中每个姓名在C列出现的次数。如果某个姓名在C列出现过,返回1;没出现过,返回0。最终得到一个由0和1组成的内存数组。
- =0:判断条件,只保留COUNTIF结果为0的姓名,也就是没有在C列出现过的。
- FILTER(A2:A23, …):根据条件筛选A列,返回所有未出现的人员姓名。
结果会自动溢出到E列下方,列出所有未出现的人员。
四、扩展应用
这个组合不仅适用于人员核对,还可以用于:检查产品清单中哪些未上架、对比两个表格找出新增或遗漏的数据、核对报名与缴费名单等。
五、使用注意
FILTER和COUNTIF函数需要Excel 2021、Office 365或最新版WPS。旧版本可以用辅助列配合筛选实现,但步骤会多一些。另外,两个区域的行数可以不同,但COUNTIF的第二个参数区域必须包含所有要检查的姓名。
六、总结
提取没有出现的人员,核心公式是 =FILTER(全部名单, COUNTIF(已出现名单, 全部名单)=0)。COUNTIF负责标记出现次数,FILTER负责筛选未出现的记录。掌握这个组合,名单核对几秒钟就能完成。
