由于没有日期,单从这些条件是写不出这个公式的,原因是有0点的问题存在
举个简单的例子
预计是2100,实际是1300,当然你可能说那里没有这样的数据,单用IF判断大小来说
会有两种判断,预计第一天2100出发,实际第二天1300出发,或者,预计2100出发,实际1300就出发了。就算2300 ,2250这两个这么接近的数值,其实也存在这个问题。
所以,你必须要规定一个最大延误时间或提早时间。假设你的延误和提早都不超过两个小时,同时所有的0点都不要改
C1公式
=IF(ABS((TEXT(A1,"00!:00")-TEXT(B1,"00!:00")))<=TIME(2,0,0),IF(TEXT(B1,"00!:00")>TEXT(A1,"00!:00"),(TEXT(B1,"00!:00")-(TEXT(A1,"00!:00")))*24*60,""),IF(TEXT(B1,"00!:00") 至于为什么不用INT,MOD。。TEXT(A1,"00!:00")*24*60从数值上来讲就等于你那一大串,所以有这个必要吗?
2300不是时间格式,需要进行转换。这里可以借助TEXT函数巧妙将它变为文本格式的时间,在减法运算中再变为真实的时间:
=MINUTE(TEXT(B1&"00","00!:00!:00")-TEXT(A1&"00","00!:00!:00"))
如果要做容错处理,进一步完善:
=IF(MINUTE(TEXT(B1&"00","00!:00!:00")>=TEXT(A1&"00","00!:00!:00")),MINUTE(TEXT(B1&"00","00!:00!:00")-TEXT(A1&"00","00!:00!:00")),"")
补充:上面的公式是得到分钟的尾数,如果要将时间差换算为分钟数,公式
=(TEXT(B1&"00","00!:00!:00")-TEXT(A1&"00","00!:00!:00"))*24*60
=TEXT(MOD(TEXT(B1,"1!:00!:00")-TEXT(A1,"0!:00!:00"),1/24),"[S]")
PS:公式假设如果B1小于A1,则判定B1为次日的时间。
对补充问题的回复:
时间记录的不规范,造成计算的麻烦。
比如你的补充说明中的最后一条
为什么不是0045而是2445?你的时钟上有显示过24:45这样的时间吗?
或者预计时间未24:45实际时间为25:25,这样也可以判断。
=if(or(b2="",b2