如果班次开始时间在7之前但结束时间在7之后,如何进行2次单独操作

时间:2017-09-13 17:17:47

标签: excel

我试图制作一张excel表,我只需要输入开始和结束时间,excel选择正确的工资率和我工作了多少小时(已经完成)并输出了多少我赚了。到目前为止,我有一个列(D)表示班次日期(DAY,月,月,年)列工作小时数(E),列开始时间和结束时间(F,G)我已写过计算工作小时数的公式但在澳大利亚我住的工资率在晚上7点后增加,并在上午12点后再次增加。有没有办法让excel自动知道它需要花费工作时间在下午7点之前并将其乘以24.41,然后工作时间在下午7点到12点之间工作26.54等,如果我的班次开始例如5:下午30点,凌晨3点结束?

这些是不同时间的不同付费方式:(时间在A1单元格,工资率为B1等)

Time                    Pay Rate
Regular                 $24.41
Mon-Fri 7pm-midnight    $26.54
Mon-Fri 7midnight-7am   $27.60
Saturday                $29.30
Sunday                  $34.18
Public Holidays         $48.83

提前致谢

1 个答案:

答案 0 :(得分:1)

所有这些类型问题的解决方案都使用重叠时间段的标准公式

=max(0,min(end1,end2)-max(start1,start2))

最好的方法IMO是以两种方式简化它

(1)将任何穿过午夜的时间分成两部分,一部分到午夜,一部分从午夜开始

(2)使用查找表将条件(星期几和时间)与薪酬表匹配。

然后使用数组公式进行查找和计算。因为您不能在数组公式中使用MAX和MIN,所以必须使用if语句将其写出并且公式变得很长

=SUM((WEEKDAY(E2,2)>=PayRates!$A$2:$A$10)*(WEEKDAY(E2,2)<=PayRates!$B$2:$B$10)*24*PayRates!$E$2:$E$10*
IF(IF(G2<PayRates!$D$2:$D$10,G2,PayRates!$D$2:$D$10)-IF(F2>PayRates!$C$2:$C$10,F2,PayRates!$C$2:$C$10)<0,0,
IF(G2<PayRates!$D$2:$D$10,G2,PayRates!$D$2:$D$10)-IF(F2>PayRates!$C$2:$C$10,F2,PayRates!$C$2:$C$10)))

必须使用 Ctrl Shift 输入

输入

这就是我的工资安排方式

enter image description here

注意当支付率的结束时间是午夜时,它输入为1(您希望它是24:00,但输入24:00只会给出与00:00相同的数据)

这是主要的表格

![enter image description here

使用以下列

A,B和C是您的输入。

<强>分割

=B2<A2

StartDate1 StartTime1 只是输入的副本

<强> EndTime1

=IF(Split,1,B2)

<强> StartDate2

=E2+Split

<强> StartTime2

00:00

<强> EndTime2

=IF(Split,B2,0)

<强>总计1

主要公式

<强>共2条

主要公式被四列复制,以便在轮班进入午夜时为第二天提供任何报酬。

总计1 +共2条

公众假期可以相当容易地添加。