Excel技术问询:如何汇总单人行仅周日的OT(hr)数值
解决单个人员周日OT时长汇总问题
为什么你之前的公式无效
=sumif(WEEKDAY(1,1),O8:AD8):完全违背SUMIF的语法逻辑,SUMIF的正确结构是SUMIF(条件区域, 匹配条件, 求和区域),你把固定值和求和区域的顺序搞反了,无法实现条件求和。=SUMIF(O8:AD8,TEXT(O6:AD6,"dddd")="Sunday"):SUMIF要求条件区域与求和区域必须一一对应,且不能直接引用另一行的动态条件判断,这个写法不符合函数规则。
有效解决公式
假设日期列在O6:AD6,目标人员的OT时长在O8:AD8,以下两种方法都能实现需求:
方法1:SUMPRODUCT函数(推荐,无需辅助列)
=SUMPRODUCT((WEEKDAY(O6:AD6,1)=1)*(O8:AD8))
- 逻辑:
WEEKDAY(O6:AD6,1)=1会将日期区域里的周日标记为1,其他日期标记为0;与OT时长区域相乘后,只有周日的OT值会被保留,最后SUMPRODUCT对这些值求和。 - 适配调整:若你使用
WEEKDAY的参数2(周一=1,周日=7),则把条件改为=7;如果是中文环境,也可以用文本判断:=SUMPRODUCT((TEXT(O6:AD6,"aaaa")="星期日")*(O8:AD8))。
方法2:SUMIFS+辅助列(适合需要直观查看周日标记的场景)
- 在日期行下方插入辅助列(比如
O7:AD7),输入公式=WEEKDAY(O6,1)=1,下拉填充整行,这样周日对应的单元格会显示TRUE,其他显示FALSE。 - 然后用SUMIFS求和:
=SUMIFS(O8:AD8,O7:AD7,TRUE)
注意事项
- 确保
O6:AD6是标准日期格式,不是文本格式,否则日期判断函数无法正常工作。 - 如果你的表格是英文环境,用
TEXT(O6:AD6,"dddd")="Sunday"替换中文的星期判断即可。
内容的提问来源于stack exchange,提问作者silentHijab
相关产品推荐
相关产品推荐

