Google 张,从小时数范围中减去休息时间
Google sheets, Subtracting breaks from a range of hours
说单元格 A3 ='12:00 PM' 和 B3 ='6:00 PM'
此公式将 return '6',工作 6 小时。
=IF(ISERROR((TIMEVALUE(B3)-TIMEVALUE(A3))*24),"0",(TIMEVALUE(B3)-TIMEVALUE(A3))*24)
但是,我希望公式可以减去工作时间 的工作时间。
比如说:
4.5 hours = No change
between 5-7 hours = subtract .5 hour (30 mins)
7+ hours = Subtract 1 hour
我可以在上面的代码中添加什么来实现这一点?
您可以使用嵌套的 if 语句 - 这很草率,但您可以复制并粘贴到同一个单元格中(但可能会根据数据开始的位置更改行号):
=if(if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)<4.5,if( iserror((timevalue(B1)-timevalue(A1))*24),"0",(timevalue(B1)-timevalue(A1))*24),if(and(if(iserror((timevalue(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)>5,if(iserror((时间值(B1)-时间值(A1))*24)," 0",(时间值(B1)-时间值(A1))*24)<7),if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)-0.5,if(if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24) >=7,if(iserror((timevalue(B1)-timevalue(A1))*24),"0",(timevalue(B1)-timevalue(A1))*24)-1,if(iserror((timevalue (B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24))))
更简洁的方法是为每个休息间隔创建额外的列(例如,C 列仍然计算未调整的工作时间,但如果 C 列介于 5 和 7 之间,则添加等于 -0.5 的 D 列,如果列 C 大于 7,则添加等于 -1 的列 E,然后列 F 添加列 C、D 和 E)
这个公式是否如你所愿:
=IF(ISERROR((TIMEVALUE(B3)-TIMEVALUE(A3))*24),"0",(TIMEVALUE(B3)-TIMEVALUE(A3))*24)-LOOKUP((TIMEVALUE(B3)-TIMEVALUE(A3))*24,{0,0;5,0.5;7,1})
说单元格 A3 ='12:00 PM' 和 B3 ='6:00 PM'
此公式将 return '6',工作 6 小时。
=IF(ISERROR((TIMEVALUE(B3)-TIMEVALUE(A3))*24),"0",(TIMEVALUE(B3)-TIMEVALUE(A3))*24)
但是,我希望公式可以减去工作时间 的工作时间。 比如说:
4.5 hours = No change
between 5-7 hours = subtract .5 hour (30 mins)
7+ hours = Subtract 1 hour
我可以在上面的代码中添加什么来实现这一点?
您可以使用嵌套的 if 语句 - 这很草率,但您可以复制并粘贴到同一个单元格中(但可能会根据数据开始的位置更改行号):
=if(if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)<4.5,if( iserror((timevalue(B1)-timevalue(A1))*24),"0",(timevalue(B1)-timevalue(A1))*24),if(and(if(iserror((timevalue(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)>5,if(iserror((时间值(B1)-时间值(A1))*24)," 0",(时间值(B1)-时间值(A1))*24)<7),if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24)-0.5,if(if(iserror((时间值(B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24) >=7,if(iserror((timevalue(B1)-timevalue(A1))*24),"0",(timevalue(B1)-timevalue(A1))*24)-1,if(iserror((timevalue (B1)-时间值(A1))*24),"0",(时间值(B1)-时间值(A1))*24))))
更简洁的方法是为每个休息间隔创建额外的列(例如,C 列仍然计算未调整的工作时间,但如果 C 列介于 5 和 7 之间,则添加等于 -0.5 的 D 列,如果列 C 大于 7,则添加等于 -1 的列 E,然后列 F 添加列 C、D 和 E)
这个公式是否如你所愿:
=IF(ISERROR((TIMEVALUE(B3)-TIMEVALUE(A3))*24),"0",(TIMEVALUE(B3)-TIMEVALUE(A3))*24)-LOOKUP((TIMEVALUE(B3)-TIMEVALUE(A3))*24,{0,0;5,0.5;7,1})