excel轮班时数

gcxthw6b  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(51)

我们有两个时间戳,当同事预计在轮班,所以在一个出这是格式为DD/MM/YYYY HH:MM,目前使用以下代码来创建一个查找值,然后查找该值的小时预计在一天中的每个班次,而它的工作我不知道是最有效的方式。
=IFERROR(IF(A2<>"",IF(FIXED((NUMBERVALUE((MOD(DaysMerged!E2,1)))*24)*100,0,TRUE)="0",2400,FIXED((NUMBERVALUE((MOD(DaysMerged!E2,1)))*24)*100,0,TRUE))&IF(FIXED((NUMBERVALUE((MOD(DaysMerged!F2,1)))*24)*100,0,TRUE)="0",2400,FIXED((NUMBERVALUE((MOD(DaysMerged!F2,1)))*24)*100,0,TRUE)),0),0)
因此,这需要一个日期,例如In 30/09/2023 14:00 & Out 30/09/2023 22:00变为14002200,然后在查找表中查找该日期,该日期变为
| 前夜|厄利斯|Lates|个晚上|后天|
| --|--|--|--|--|
| 0 | 0 | 8 | 0 | 0 |
另一个例子是30/09/2023 05:00 & Out 30/09/2023 13:00,所以5001300
| 前夜|厄利斯|Lates|个晚上|后天|
| --|--|--|--|--|
| 1 | 7 | 0 | 0 | 0 |
什么IM后是一种方法来转换在&出时间戳到轮班时间跨越3个班次,每个班次是早06:00-14:00晚14:00-22:00然后晚上22:00-06:00.一旦这是分裂,然后我需要得到每个班次的小时数,以显示有多少小时的同事是轮班。所以早,晚和晚上很容易只是得到他们的价值,然后我必须添加任何重叠的转变之前或之后。再次我有这个工作,只是寻找建议和有效的方式去做这件事。任何例子,网站等都欢迎。
谢谢.

a0x5cqrl

a0x5cqrl1#

我们试试
这个想法是重新编号小时的连续值。从昨天22到明天14

  • 需要两个附加列来缩短公式。C栏和D栏。以后可以藏起来。
  • C2和D2栏中的公式
C2                      D2
=HOUR(A2)+3   =24*(INT(VALUE(B2))-INT(VALUE(A2)))+HOUR(B2)+3  'edited by comment

E至I列中的公式

E2:   =IF(C2<2;8;IF(C2<9;9-C2))-IF(D2<2;8;IF(D2<9;9-D2))
F2:   =IF(C2<10;8;IF(C2<17;17-C2))-IF(D2<10;8;IF(D2<17;17-D2))
G2:   =IF(C2<18;8;IF(C2<25;25-C2))-IF(D2<18;8;IF(D2<25;25-D2))
H2:   =IF(C2<26;8;IF(C2<33;33-C2))-IF(D2<26;8;IF(D2<33;33-D2))
I2:   =IF(C2<34;8;IF(C2<41;41-C2))-IF(D2<34;8;IF(D2<41;41-D2))

测试结果:

此版本以分钟计算时间。

  • C2和D2栏中的公式
C2                      D2
=A2-INT(A2)+3/24   =1*(INT(VALUE(B2))-INT(VALUE(A2)))+B2-INT(B2)+3/24

E至I列中的公式

E2:   =IF(C2<1/24;8/24;IF(C2<9/24;9/24-C2))-IF(D2<1/24;8/24;IF(D2<9/24;9/24-D2))
F2:   =IF(C2<9/24;8/24;IF(C2<17/24;17/24-C2))-IF(D2<9/24;8/24;IF(D2<17/24;17/24-D2))
G2:   =IF(C2<17/24;8/24;IF(C2<25/24;25/24-C2))-IF(D2<17/24;8/24;IF(D2<25/24;25/24-D2))
H2:   =IF(C2<25/24;8/24;IF(C2<33/24;33/24-C2))-IF(D2<25/24;8/24;IF(D2<33/24;33/24-D2))
I2:   =IF(C2<33/24;8/24;IF(C2<41/24;41/24-C2))-IF(D2<33/24;8/24;IF(D2<41/24;41/24-D2))

结果:

相关问题