概括:
我知道该功能NETWORKDAYS
可用于查找两个日期之间的工作日数(=不包括周末和节假日)。但是,如果我想知道昨天14:00至今天10:00之间的工作时间怎么办?
->我需要一个NETWORKINGHOURS
不存在的函数(Excel 2003)。本质上,采用NETWORKDAYS
并添加两个附加参数start of working day
和end 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参见上面的代码块
整个工作日= NETWORKDAYS-2
第一天的工作时间= MAX(0,结束日期-MAX(开始时间,开始日期))
最后一天的工作时间= MAX(0,MIN(entime,endofday)-startofday)
总工作日=整个工作日+ INT((第一天工作的时间+最后一天工作的时间)/(结束日期-开始日期))
额外时间(总天数之后)= MOD(第一天工作的时间+最后一天工作的时间,结束时间-开始时间)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句