1

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

我需要一个能够

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

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

谢谢

链接到示例工作簿

4

2 回答 2

6

您可以使用NETWORKDAYSandNETWORKDAYS.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"

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

于 2012-12-10T05:38:09.107 回答
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"))
于 2012-12-10T15:45:10.427 回答