Excel:计算两个日期之间的工作时间


1

摘要:

我知道该功能NETWORKDAYS可用于查找两个日期之间的工作日数(=不包括周末和节假日)。但是,如果我想知道昨天14:00至今天10:00之间的工作时间怎么办?

->我需要一个NETWORKINGHOURS不存在的函数(Excel 2003)。本质上,采用NETWORKDAYS并添加两个附加参数start of working dayend of working day。听起来很简单,但是我尝试通过公式创建它的过程很快变得非常复杂。

问题:即使结束时间早于开始时间,
networkhours该如何工作?

细节:

我有一个带有两个日期和时间列的Excel工作表。我想计算时间戳之间的天数+小时+分钟,但仅计算营业时间。

该函数NETWORKDAYS可用于查找不包括周末和节假日的工作日(通过从结果中减去2,因为该函数会计算开始日期和结束日期,而与时间无关)。到现在为止还挺好。看起来像这样(从这里得到灵感):

=CONCATENATE(NETWORKDAYS($A6;B6;holidays)-1
;"d "
;HOUR(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
;":"
;IF(MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))>9
;MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
;CONCATENATE("0";MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1))))))

1d 2:30假设我已经为startofday(08:00),endofday(16:00)和holidays(带有日期值的列)命名了单元格,则格式给我很好的结果。

这个作品非常好,除了公式休息时,结束时间的日是开始前的时间的天。这是我的测试数据和公式:

替代文字

networkdays -2 =NETWORKDAYS($A6;B6;holidays)-2
小时=MIN($B$3;MOD(B6;1))-MAX($A$3;MOD(A6;1))
分钟=MINUTE(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
networkhours 参见上面的代码块


您是否尝试过使用Tools -> Formula Auditing -> Evaluate Formula失败的公式?
DMA57361 2011年

HOUR(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))关注我 Excel无法将负值解释为日期/时间值-我怀疑这是问题所在,因为给定的两次(12:00-> 11:30)导致30分钟的负值(-0.0208333 ..)。
DMA57361 2011年

@ DMA57361是的,这是问题的负面结果,但是我对如何解决这个问题不知所措。
2011年

您可以延迟或删除对的呼叫HOURS()吗?日期仅以数字形式存储在幕后(步骤1为一天,因此1/24为小时,依此类推)。如果将它们保留为数字,则只需将它们加起来,然后将结果字段手动格式化为日期/时间。
DMA57361 2011年

您可以使用绝对函数为您提供一个psoitve数字吗?
RSMoser 2011年

Answers:


2

整个工作日= NETWORKDAYS-2

第一天的工作时间= MAX(0,结束日期-MAX(开始时间,开始日期))

最后一天的工作时间= MAX(0,MIN(entime,endofday)-startofday)

总工作日=整个工作日+ INT((第一天工作的时间+最后一天工作的时间)/(结束日期-开始日期))

额外时间(总天数后)= MOD(第一天工作的时间+最后一天工作的时间,结束时间-开始时间)


@torbengb:等等,有什么评论?
LaC 2011年

哦,在此期间,已对此进行了审核。请忽略!
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.