我有一个Excel格式的工作时间开始:15:30(A1)和完成:01:00(B1)。我想计算我上夜班的小时数(C1)。夜班是在22:00和06:00之间。因此,如果我工作,例如17:00到02:15,我应该得到数字04:15作为夜班小时数。如果我从22:00到09:15工作,我应该得到8个夜班小时数。我得到的时差为“"=MOD(B2-A2;1)"”但是这得到了整个轮班,而不仅仅是夜班。有什么建议吗?
看起来这段代码只适用于一对列,但是我不知道如何对结果求和。Excel是分隔成列的,每个日期都有2列用于开始和结束轮班
=MOD(D4-C4;1)24-(D4〈C4)(22-6)-中位数(D424;6;22)+中位数(C424;第6条、第22条)
理想的情况是得到该结果的公式=MOD(D4-C4;1)24-(D4〈C4)(22-6)-中位数(D424;6;22)+中位数(C424;6;22)+模块(F4-E4;1)24-(F4〈E4)(22-6)-中位数(F424;6;22)+中位数(E424;6;22)+模块(H4-G4;1)24-(H4〈G4)(22-6)-中位数(H424;6;22)+中位数(G424;6;22)等,但更紧凑的方式
1条答案
按热度按时间brccelvz1#
假设所有的输入时间都是相对于
1/0/1900
的(只有时间部分信息),那么需要考虑日期何时是指第二天(加上1
),结束日期的条件是如果start > end
,那么end
日期是指第二天(+1
),我们在解决时考虑到了上述情况。根据问题中列出的标签,假设没有excel版本约束,您可以在
F2
中使用以下公式:我创建了一个用户
LAMBDA
函数CALC
,只是为了避免在实际开始时重复类似的计算(a
)和结束(b
)。从公式中可以看出,夜间结束(ne
)已经被调整为考虑第二天。类似地,我们对end
时间进行调整,当结束时间(end
)小于开始时间(start
)时,考虑第二天计算有效结束时间(eEff
)。我们使用
MEDIAN
来标识两种情况下的实际间隔。其中
0:00
表示夜班没有消耗时间,剩下的只是使用正确的格式:hh:mm
以显示夜班期间的持续时间。如果您以数字格式显示输入数据,则可以在Excel中看到引用第一个有效年份的时间(
<= 1
):这就是为什么我们需要转换
ne
和end
(如果它表示第二天),但这取决于您是否希望在输入数据中考虑第二天。因此,对于行2
,它表示当天的01:00
(0.04
),因此在公式中,我们将其视为:第二天x1月24日n1x x1月25日n1x)