摘要:
我知道该功能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 参见上面的代码块
HOUR(MIN(endofday;MOD(B6;1))-MAX(startofday;MOD($A6;1)))
关注我 Excel无法将负值解释为日期/时间值-我怀疑这是问题所在,因为给定的两次(12:00-> 11:30)导致30分钟的负值(-0.0208333 ..)。
HOURS()
吗?日期仅以数字形式存储在幕后(步骤1为一天,因此1/24为小时,依此类推)。如果将它们保留为数字,则只需将它们加起来,然后将结果字段手动格式化为日期/时间。
Tools -> Formula Auditing -> Evaluate Formula
失败的公式?