Excel匹配预定义字符串的行的条件求和及员工每周预约量(含休假排除)统计公式求助
Excel匹配预定义字符串的行的条件求和及员工每周预约量(含休假排除)统计公式求助
嘿,我完全懂你现在的困扰——要统计每个员工每周提供的不同预约类型数量,还得自动排除他们休假的时段,试了SUMIF加TEXTSPLIT组合没搞定对吧?别慌,咱们结合你的需求一步步来解决。
先明确核心目标:
- 按日历周分组,统计单个员工的不同预约类型数量
- 自动排除该员工处于休假状态的日期/周对应的记录
我结合常见的Excel数据结构,给你两种适配不同版本的公式方案:
方案一:适用于Excel 365/2021(动态数组支持)
假设你的数据源表结构是:
- A列:员工姓名
- B列:预约日期
- C列:预约类型
- D列:休假标记(比如休假时填“休假”,正常预约为空)
如果要统计F2单元格指定员工、G2单元格指定日历周的不同预约数量,公式可以这么写:
=COUNTA(UNIQUE(FILTER(C:C, (A:A=F2)*(ISOWEEKNUM(B:B)=G2)*(D:D<>"休假"))))
拆解一下逻辑:
FILTER(C:C, ...):筛选出三个条件同时满足的预约类型——员工匹配、日期属于目标周、不是休假记录UNIQUE(...):从筛选结果里提取不重复的预约类型COUNTA(...):统计这些不同类型的数量
如果你的休假记录是单独的表格(比如有一张休假表,B列是休假日期),那公式调整为判断预约日期是否在休假范围内:
=COUNTA(UNIQUE(FILTER(C:C, (A:A=F2)*(ISOWEEKNUM(B:B)=G2)*(NOT(ISNUMBER(XMATCH(B:B, 休假表!B:B)))))))
方案二:兼容旧版Excel(无动态数组支持)
如果你的Excel版本不支持动态数组,用SUMPRODUCT结合COUNTIFS来实现去重统计:
=SUMPRODUCT((A:A=F2)*(ISOWEEKNUM(B:B)=G2)*(D:D<>"休假")/COUNTIFS(A:A,A:A,B:B,B:B,C:C,C:C,A:A,F2,ISOWEEKNUM(B:B),G2,D:D,"<>休假"))
这个公式通过SUMPRODUCT筛选符合条件的行,再用COUNTIFS去除同一员工同周内重复的预约类型,最终求和得到不同类型的数量。
特殊情况:单个单元格含多个预约类型
如果你的C列是用分隔符(比如逗号)分隔的多个预约类型,那需要先拆分再统计,公式调整为:
=COUNTA(UNIQUE(TEXTSPLIT(TEXTJOIN(",",TRUE,FILTER(C:C, (A:A=F2)*(ISOWEEKNUM(B:B)=G2)*(D:D<>"休假"))),",")))
逻辑是先筛选符合条件的多类型单元格,合并成字符串后拆分,最后去重统计数量。
你可以根据自己的实际数据列引用调整公式,应该就能得到你需要的红色统计数字啦!
备注:内容来源于stack exchange,提问作者st4co4
相关产品推荐
相关产品推荐

