在EXCEL表格中,怎么使用IF时间函数执行时间加减?计算早晚班补贴工时滴

具体条件如下:1.假设下班时间为D1,当D1>22:00时,执行D1-22:00.
2.补贴时间是:22:00—次日7:00
3.执行时间减法后要将返回的结果转换成小数。
以上3个条件要同时在一个单元格内实现。
假设下班时间是24:30,当下班时间超过22点的时候,就有24:30-22:00=2:30的补贴工时。然而补贴工时是在22:00到次日7:00才会有的,也就是说不在这个时间段内没有工时补贴,没有工时补贴则记为0:00小时。但是算出来的结果又要换算成小数,也就是说2:30要换算成2.5小时。请各位高手帮帮忙哈。

假设数据如下图所示:

则在C2单元格输入公式:

=IF(IF(B2<(DATEVALUE(TEXT(A2,"yyyy-mm-dd"))+TIME(22,0,0)),0,B2-(DATEVALUE(TEXT(A2,"yyyy-mm-dd"))+TIME(22,0,0)))*24<9,IF(B2<(DATEVALUE(TEXT(A2,"yyyy-mm-dd"))+TIME(22,0,0)),0,B2-(DATEVALUE(TEXT(A2,"yyyy-mm-dd"))+TIME(22,0,0)))*24,9)


结果就是补贴工时

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-16
问题1:=if(d1>--"22:00",d1-"22:00","")
问题2:=text(mod("7:00"-"22:00",1),"[h]:mm")
问题3:=round(24*mod("7:00"-"22:00",1),2)追问

3个条件要在同一个单元格内实现。问题有补充,麻烦你帮我解答一下啦

追答

假设E列为晚班补贴工时
在E1输入公式:
=if(or(d1>=--"22:00",d1<=--"7:00"),round(24*mod(d1-"22:00",1),2),)
下拉填充

追问

这个表达式可行,但是还有点疑问。就是当某天我休息的时候,在上班和下班的单元格中填写:“休息”的时候就产生了错误,这个又该如何避免呢?

追答

再加个判断语句,公式改成:
=if(isnumber(d1),if(or(d1>=--"22:00",d1=--"22:00",d1<=--"7:00"),round(24*mod(d1-"22:00",1),2),))

本回答被提问者采纳
第2个回答  2013-01-16
顶楼上的!
相似回答