如果在Excel中使用小时/分钟的语句

需要一个公式为以下4种情况

  • 如果你的工作时间less于9小时,而你的rest时间less于30分59秒,我想要一个0
  • 如果你工作时间less于9小时,你的rest时间超过31分钟,我想要一个1
  • 如果你工作超过9小时,而你的rest时间less于45:59分钟,我想要一个0
  • 如果你工作超过9小时,你的rest时间超过46分钟,我想要一个1

这是我迄今为止。 它大部分是有效的,但不是所有的陈述。

例如:

  • C2 =人员时间列为9:55:21
  • G2 =rest时间列为:40:46

     =IF(AND(C2<"9:00:00",G2<":30:59"),0, IF(AND(C2>"9:00:01",G2<":45:59"),0, IF(AND(C2<"9:00:00",G2>":31:00"),1, IF(AND(C2>"9:00:01",G2>":46:00"),1,"FALSE")))) 

我可以得到一些工作的情况,但我不能让他们所有的4个工作。 我认为这可能是一个格式问题的时间

OP评论说,人员configuration时间和中断时间都可能是格式不正确的。 所以首先我们最好把这些数据格式化成适当的datetypes。 当string键入U29:55:21:51:1351:13 ,下面的公式将正确格式化。

  • V2=FIND(":", U2)
  • W2=IFERROR(FIND(":", U2, V2+1), 0)
  • X2=IF(W2=0, TIME(0,LEFT(U2,V2-1),MID(U2,V2+1,2)), IF(V2>1,TIME(LEFT(U2,V2-1),MID(U2,V2+1,2),MID(U2,W2+1,2)),TIME(0,MID(U2,V2+1,2),MID(U2,W2+1,2))))

所以如果你得到适当的时间( X2 )和rest时间(比如AC2 )的date,那么你可以根据你的四个条件得到01 。 (这个公式可以缩短,但是为了清晰起见,我没有这么做。)

 =IF(AND(HOUR(X2)<9, HOUR(AC2)*60 + MINUTE(AC2)<31), 0, IF(AND(HOUR(X2)<9, HOUR(AC2)*60 + MINUTE(AC2)>=31), 1, IF(AND(HOUR(X2)>=9, HOUR(AC2)*60 + MINUTE(AC2)<46), 0, IF(AND(HOUR(X2)>=9, HOUR(AC2)*60 + MINUTE(AC2)>=46), 1)))) 

而我用>=而不是>因为你没有在纯文本中指定大约相等的条件。 示例Excel文件在这里 。 示例文件也处理一些格式不正确的input。

在这里输入图像说明