这听起来很简单,但我一直在努力寻找解决方案。在我秃顶之前的任何帮助都会很棒。
我需要一个能够
- 计算两个日期\时间值(例如
05/12/2012 5:30 PM
,说)之间的持续时间(天、小时、分钟07/12/2012 5:45 PM
); - 周末和节假日除外。
我希望公式的结果如下所示“例如2 Days 0 Hrs and 15 Mins
”。
谢谢
链接到示例工作簿
这听起来很简单,但我一直在努力寻找解决方案。在我秃顶之前的任何帮助都会很棒。
我需要一个能够
05/12/2012 5:30 PM
,说)之间的持续时间(天、小时、分钟07/12/2012 5:45 PM
);我希望公式的结果如下所示“例如2 Days 0 Hrs and 15 Mins
”。
谢谢
链接到示例工作簿
您可以使用NETWORKDAYS
andNETWORKDAYS.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/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"))