如何修改COUNTIFS公式实现员工单日工时累计统计?
解决员工单日总工时≥10小时的天数统计问题
原公式仅统计单个单元格工时≥10的记录数,无法累计同一员工同一天的多行工时总和,导致统计结果与预期不符。以下是两种修改方案:
方案1:兼容所有Excel版本的公式
针对每一天单独计算总工时,判断是否达标后累加达标天数:
=IFERROR( (--(SUMIFS(Table6[MON], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[TUES], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[WED], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[THURS], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[FRI], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[SAT], Table6[Employee Name], [@Employee])>=10)) + (--(SUMIFS(Table6[SUN], Table6[Employee Name], [@Employee])>=10)) , "-")
逻辑说明:
SUMIFS(Table6[MON], Table6[Employee Name], [@Employee]):计算当前员工周一的所有工时总和--(总和>=10):将布尔判断结果(TRUE/FALSE)转换为1/0,达标计1,不达标计0- 7个工作日的判断结果相加,得到总达标天数
IFERROR(..., "-"):处理无数据的异常情况,返回短横线
方案2:Excel 365/2021 简化公式
利用动态数组函数批量处理7列,代码更简洁:
=IFERROR( SUM(--(BYCOL(Table6[[MON]:[SUN]], LAMBDA(col, SUMIFS(col, Table6[Employee Name], [@Employee]))>=10))), "-")
逻辑说明:
BYCOL(Table6[[MON]:[SUN]], LAMBDA(col, SUMIFS(col, Table6[Employee Name], [@Employee]))):批量计算当前员工7天每天的工时总和,返回包含7个值的数组--(数组>=10):将数组中每个总和的判断结果转为1/0SUM(...):累加所有达标天数- 同样用
IFERROR处理异常情况
内容的提问来源于stack exchange,提问作者sogeniusio
相关产品推荐
相关产品推荐

