You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel中如何在COUNTIFS函数内添加日期为工作日的判断条件,精准计算含半天假期的月度工作日

解决Excel中半天假的工作日计算问题

嗨,这个问题我刚好有现成的解决方案!你遇到的核心问题是COUNTIFS没办法直接在条件里嵌入工作日判断逻辑,而且不想用辅助列,那咱们换用SUMPRODUCT函数就能完美解决——它支持数组运算,能直接把多个判断条件揉进计算里,不用额外单元格。

调整后的最终公式(以G2为例)

=NETWORKDAYS(CONCATENATE("1.",MONTH(E2),".",$B$2),CONCATENATE(F2,".",MONTH(E2),".",$B$2), $A$8:$A)+SUMPRODUCT(($A$8:$A>EOMONTH(E2,-1))*($A$8:$A<EOMONTH(E2,0)+1)*($C$8:$C=TRUE)*(WEEKDAY($A$8:$A,2)<6))*0.5

公式拆解说明

咱们一步步看为什么这样改:

  • 原NETWORKDAYS部分不变:还是先计算当月总工作日(扣除所有全天假,包括误扣的半天假)。
  • SUMPRODUCT替代COUNTIFS:这是关键,它能同时满足多个条件:
    • $A$8:$A>EOMONTH(E2,-1)$A$8:$A<EOMONTH(E2,0)+1:确保假期日期在当前月份内;
    • $C$8:$C=TRUE:只针对标记为半天假的日期;
    • WEEKDAY($A$8:$A,2)<6:判断该日期是否为工作日(参数2表示周一为1、周日为7,<6就是周一到周五)。
  • 乘以0.5补回时长:SUMPRODUCT会把所有满足条件的日期数量加总,乘以0.5就是要补回的误扣半天时长。

为什么这个方案可行?

  • 完全不需要辅助列,避免用户误修改的风险;
  • 自动排除了落在周末的半天假:如果假期是周末,WEEKDAY(...) <6会返回FALSE,这一项不会被计入总和,也就不会错误补回时长;
  • 比用COUNTIFS更灵活,能直接在条件里嵌入逻辑判断。

如果习惯用NETWORKDAYS.INTL判断工作日,也可以把WEEKDAY($A$8:$A,2)<6换成NETWORKDAYS.INTL($A$8:$A,$A$8:$A,1)=1(参数1代表周末是周六周日),效果完全一样。

内容的提问来源于stack exchange,提问作者User1291

火山引擎 最新活动