除去周末和节假日时间的经过天数小时数

这听起来很简单,但我一直在试图找出解决scheme。 我去秃头之前的任何帮助将是伟大的。

我需要一个能够的公式

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

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

谢谢

链接到示例工作簿

您可以使用NETWORKDAYSNETWORKDAYS.INTL来实现这一点

这些回报networking需要一点操作:

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

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

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

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

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

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

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


使用自定义数字格式来显示所需格式的thye结果

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

注意:这种格式不适用于负值,您将需要一个替代结束date是在开始date之前。

下面的公式就像一个没有额外的格式或操作的处理。

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

将公式中的“D5”replace为您的课程参考单元格或“完成date”的“结束date”和“E5”或“完成date”的“公制”。

 =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"))