You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于日期范围计算工时的嵌套IF公式问题求助

考勤工时计算公式修正方案

问题场景

我用嵌套IF公式计算考勤总工时,支持区分连续工作和每日部分工时的情况,大部分场景结果正确,但遇到跨天夜班(开始时间晚于结束时间)时会多算工时;要是删掉公式里D12-B12+1的+1,又会搞坏其他正常条目的计算结果。原公式如下:
=IF(F12="Yes",(P12-O12) * 24 *K12, IF(F12="No",(MOD(E12-C12,1)) * 24 * (IF(AND(D12=B12+1,E12<C12),+1,D12-B12+1)) * K12,0))

问题根源

原公式里的跨天判断只覆盖了刚好跨1天的情况(D12=B12+1),但当跨多天且存在夜班时,D12-B12+1会多算1天,导致工时被重复计算。

修正公式

=IF(F12="Yes",(P12-O12)*24*K12,
 IF(F12="No",
    MOD(E12-C12,1)*24*
    (IF(AND(D12>B12,E12<C12), D12-B12, D12-B12+1))*K12,
 0))

修正逻辑说明

  • 连续工作场景(F12="Yes"):保留原逻辑,用结束时间减开始时间换算成小时后乘以系数K12。
  • 非连续/每日部分工时场景(F12="No"):
    • MOD(E12-C12,1)确保跨天单次工时计算正确(比如22:00到次日02:00会得到4小时,而非负数)。
    • 天数计算优化:只要是跨天且结束时间早于开始时间(不管跨几天),就用D12-B12作为天数(去掉多算的1天);其他正常情况仍用D12-B12+1。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:36:37