我正在制作一个简单的时间表,应该计算加时赛1和加时赛2,我只是想办法解决它。
从07:00到17:00的8小时正常工作日不加班(例如07:00至16:00或08:00至17:00),但是当时间超过8小时我想得到超过小时里面的小时。
我的商业规则是:
1)从06:00到20:00之间的任何超过8小时的工作都将获得加班费1。
2)任何不到8小时的工作即使在20:00之后也不会产生任何加班费
3)任何早于06:00或晚于20:00的工作都将以加班费率支付。
示例1:从07:00到18:00工作将获得3小时的加班时间值
示例2:从14:00到22:00工作将产生0小时的加班时间2。
示例3:工作时间为05:00至21:00,加班时间为6小时,加班时间为2小时(06:00之前1小时,20:00之后1小时)。
答案 0 :(得分:1)
这只是为了让逻辑正确并理解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)
答案 1 :(得分: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得到加班时间1。结合超级公式,在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格式化1 = 24小时的日期。另外,我添加了一个OR(ISBLANK(A1),ISBLANK(B1))
语句,以确保如果其中一个值为空,则会得到一个空字符串。
从加班2开始,您需要将其分为两部分:06:00之前和20:00之后。第一部分检查时钟是否早于06:00,如果是,则计算出多少小时。该公式最终最终成为:
=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后记录的一天中有多少部分。最终的公式最终是:
=IF(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))>=20/24,((B1-FLOOR(B1,2))-20/24)*24,0)
最后,要弄清楚加班2的总数,只需在D1中添加两个公式:
OT2: =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))