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

工作日工时计算公式问题:8-18点工作制下格式显示异常

工作日工作时长计算问题及修正方案

我们采用工作日8:00-18:00工作制,周末休息。任务可随时进入系统,但仅在工作时段处理。原本使用以下公式提取任务工作时长:

=(NETWORKDAYS(B2,C2)-1)*("18:00:00"-"8:00:00")+IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")-MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")

问题描述

当实际工作时长为47小时54分47秒(对应需求的4天7小时54分47秒)时,用[h]:mm:ss格式显示正常,但设置为d:hh:mm:ss格式时,得到的结果是1天23小时54分43秒,不符合需求。

样本数据

任务ID到达日期完成日期耗时天:时:分:秒8-18点工作时长(时分秒)8-18点工作时长(十进制)
1-2QPM01/14/2022 19:18:2501/14/2022 19:18:25天:0 时:0 分:0 秒:00 :0 :0 :00:00:000
1-2QPM01/14/2022 19:18:2501/14/2022 20:20:06天:0 时:1 分:1 秒:410 : 1 : 1 : 410:00:000
1-2QPM01/14/2022 20:20:0601/21/2022 15:54:47天:6 时:19 分:34 秒:46 : 19 : 34 : 4147:54:471.996377315
1-2QPM01/21/2022 15:54:4701/21/2022 16:21:24天:0 时:0 分:26 秒:370 : 0 : 26 : 370:26:370.018483796
1-2QPM01/21/2022 16:21:2401/21/2022 17:25:28天:0 时:1 分:4 秒:40 : 1: 4: 41:04:040.044490741

注:「耗时」列为包含周末的总时长,是原始数据。

问题原因

原公式计算的是总工作时长(以Excel时间单位表示,1天=24小时),而我们的工作日有效时长为10小时/天。当使用d:hh:mm:ss格式时,Excel会按自然日(24小时)解析时长,导致47小时被错误解析为1天23小时(24+23=47),而非需求的4天7小时(4×10+7=47)。

修正方案

方案1:直接生成“X天Y小时Z分W秒”文本结果

该方案通过计算总工作小时数,拆分出工作日数、剩余小时、分、秒,再拼接成符合需求的文本格式:

=INT((NETWORKDAYS(B2,C2)-1)*10 + IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")*24 - MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")*24)/10 & "天" & 
TEXT(MOD((NETWORKDAYS(B2,C2)-1)*10 + IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")*24 - MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")*24,10),"0") & "小时" & 
TEXT(MOD((NETWORKDAYS(B2,C2)-1)*10 + IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")*24 - MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")*24,1)*60,"0") & "分" & 
TEXT(MOD((NETWORKDAYS(B2,C2)-1)*10 + IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")*24 - MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")*24,1/60)*60,"0") & "秒"

方案2:适配自定义时间格式(d代表10小时工作日)

若需保留数值格式以便后续计算,可将总工作时长转换为以“10小时=1工作日”为单位的数值,再设置自定义格式:

  1. 使用公式计算转换后的数值:
=((NETWORKDAYS(B2,C2)-1)*10 + IF(NETWORKDAYS(C2,C2),MEDIAN(MOD(C2,1),"18:00:00","8:00:00"),"18:00:00")*24 - MEDIAN(NETWORKDAYS(B2,B2)*MOD(B2,1),"18:00:00","8:00:00")*24)/10
  1. 设置单元格自定义格式为:d"天"hh"小时"mm"分"ss"秒"
    此时数值的整数部分为工作日数,小数部分会自动转换为剩余的小时、分、秒(基于10小时工作日的比例)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:25:55