经过的天数小时不包括周末和假期时间

时间:2012-12-09 22:30:27

标签: excel excel-formula

这听起来很简单,但我一直在努力寻找解决方案。在我去秃头之前的任何帮助都会很棒。

我需要一个能够

的公式
  • 计算两个日期\时间值之间的持续时间(天,小时,分钟)(例如05/12/2012 5:30 PM并说07/12/2012 5:45 PM);
  • 不包括周末和假日。

我希望公式的结果如下所示“例如2 Days 0 Hrs and 15 Mins”。

由于

链接到sample workbook

2 个答案:

答案 0 :(得分:6)

您可以使用NETWORKDAYSNETWORKDAYS.INTL来实现此目标

需要进行一些操作,因为这些操作会返回整个天:

  • 使用这些函数计算非工作日数,然后从开始日期和结束日期之间的差值中减去

    =E3-D3-(NETWORKDAYS.INTL(D3,E3,"0000000")-NETWORKDAYS(D3,E3,$A$16:$A$24))
    

这将返回工作日差异,其中1.0 = 1天

  • NETWORKDAYS.INTL(D3,E3,"0000000")计算两个日期之间的整天(无周末,无假期)

  • NETWORKDAYS(D3,E3,"0000000",$A$16:$A$24)计算两个日期之间的整个工作日(周六/周日周末,根据$A$16:$A$24列表中的假期)

  • 两个日期之间非工作日的差异。

  • E3-D3是开始和结束日期/时间之间的时间(1.0 = 1天)


使用自定义数字格式以您需要的格式显示结果

d "Days" h "Hours" mm "Mins"

注意:此格式不适用于负值,当结束日期早于开始日期时,您需要另一种格式。

答案 1 :(得分:0)

以下公式的作用类似于没有其他格式或操作的处理。

为了使其更加稳定,我已将英国2012/13的所有假日日期变为“Excel序列号”格式,并将它们放在数组中。

将公式中的“D5”替换为您的课程的单元格引用或指标“结束日期”和“E5”与您的课程或“完成日期”的指标。

=IF(E5<D5,"-"&TEXT(D5-E5,"h:mm"),NETWORKDAYS(D5,E5,({40910,41005,41008,41036,41064,41065,41148,41268,41269,41275,41362,41365,41400,41421,41512,41633,41634}))-1-(MOD(E5,1)<MOD(D5,1))&" days "&TEXT(E5-D5,"h:mm"))