如何用公式标记含休假记录的员工日唯一标识(多匹配场景)
解决同一唯一标识的休假批量标记问题
嘿,针对你遇到的这个表格标记问题,我给你准备了两个实用的公式方案,都能轻松实现需求:只要同一User ID+Date生成的唯一标识下,有任意一行D列包含休假类关键词(比如sick、vacation),就给该标识的所有行打上flag标记。
方法1:用COUNTIFS函数(适配Excel、Google Sheets、WPS等多数工具)
在E2单元格输入下面的公式,然后下拉填充到所有行就行:
=IF(COUNTIFS(A:A,A2,D:D,"*vacation*")+COUNTIFS(A:A,A2,D:D,"*sick*")>0,"flag","")
公式拆解:
COUNTIFS(A:A,A2,D:D,"*vacation*"):统计当前行的唯一标识(A2)对应的所有行里,D列包含vacation的记录数- 第二个
COUNTIFS同理,统计包含sick的记录数 - 把两个统计结果相加,只要大于0,就说明这个唯一标识下有休假记录,返回
flag;否则返回空值 - 这里的
*是通配符,不管D列里是Sick、Sick leave还是vacation day,都能被识别到
方法2:用SUMPRODUCT函数(更简洁的写法)
如果觉得多个COUNTIFS有点啰嗦,试试这个更紧凑的公式:
=IF(SUMPRODUCT(--(A:A=A2),--(ISNUMBER(SEARCH({"vacation","sick"},D:D))))>0,"flag","")
公式拆解:
--(A:A=A2):把和当前行唯一标识相同的行转化为1,其他行转化为0--(ISNUMBER(SEARCH({"vacation","sick"},D:D))):检查D列是否包含列表里的任意一个休假关键词,包含就返回1,不包含返回0SUMPRODUCT会把这两组数值相乘后求和,只要结果大于0,就说明该标识下有休假记录,直接返回flag
小提示
- 如果你的休假关键词还有其他(比如
personal leave、annual leave),只需要在公式的关键词列表里添加就行,比如方法2里改成{"vacation","sick","personal leave"} - 为了让公式运行更流畅,建议把公式里的
A:A、D:D改成实际的数据范围(比如A2:A1000、D2:D1000),避免整列计算拖慢表格速度
内容的提问来源于stack exchange,提问作者LittleAuditorium
相关产品推荐
相关产品推荐

