如果在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时间和中断时间都可能是格式不正确的。 所以首先我们最好把这些数据格式化成适当的date
types。 当string
键入U2
是9:55:21
或:51:13
或51: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,那么你可以根据你的四个条件得到0
或1
。 (这个公式可以缩短,但是为了清晰起见,我没有这么做。)
=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。