具体加class计算

我正在计算一个简单的时间表,应该计算加class费1和加class费2,我只是不能找出解决这个问题的好方法。

正常的工作日上午7点至下午7点,不给加class(例如:07:00-16:00或08:00-17:00),但是如果超过8小时,细胞。

我的商业规则是:

1)在06:00至20:00之间超过8小时的任何工作将被加class1。

2)8小时以内的工作即使在20:00以后也不会产生加class2

3)早于06:00或晚于20:00进行的工作以加class费率支付。

示例1:从07:00到18:00工作时间为3小时

例2:从14:00到22:00工作会产生0小时的加class时间2。

例3:05:00〜21:00加class6小时,加class2 2小时(06:00前1小时,20:00后1小时)。

如果你的数据是巧妙地布置的,这是一个很容易解决的问题。 以列A作为时钟,列B作为时钟输出时间,使用该公式作为帮助,以确定您是否应该使用时钟或您的基地06:00:

=IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))

然后使用此公式来确定是否应该使用计时时间或20:00:

=IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))

然后你减去两个分数的一天,乘以24转换为小时,然后减去8获得加class1小时。 在一个超级公式中看起来像C1:

OT1: =IF(OR(ISBLANK(A1),ISBLANK(B1)),"",(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))-IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2)))*24-8)

请记住,Excel格式的date是1 = 24小时。 另外,我在OR(ISBLANK(A1),ISBLANK(B1))语句中添加了一个值,如果其中一个值为空,确保你得到一个空string。

从加class2开始,您需要将其分为两部分:06:00之前和20:00之后。 第一部分检查时钟是否早于06:00,如果是,则计算出多less小时。 该公式最终结果是:

=IF(IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))<=6/24,(6/24-(A1-FLOOR(A1,2)))*24,0)

在20:00以后,使用相同的模式。 找出20:00后一天中有多less部分logging。 最后的公式最终是:

=IF(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))>=20/24,((B1-FLOOR(B1,2))-20/24)*24,0)

最后,要计算加class总数2,只需在D1中加上两个公式:

(A2,2) =IF(OR(ISBLANK(A1),ISBLANK(B1)),"",IF(IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))<=6/24,(6/24-(A1-FLOOR(A1,2)))*24,0)+IF(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))>=20/24,((B1-FLOOR(B1,2))-20/24)*24,0))

这只是为了获得逻辑正确的理解,Excel将07:00作为一个小数等于7/24 ,例如。

OT1

 =IF(NOT(AND(Sheet1!$A2>=7/24,Sheet1!$B2<=17/24)),MIN(20/24,Sheet1!$B2)-Sheet1!$A2-9/24,0) 

OT2

 =IF(MIN(20/24,Sheet1!$B2)-Sheet1!$A2-9/24,MAX(B2-20/24,0),0) 

在这里输入图像说明