使用公式来确定从时间数据的转换
我有一列时间数据格式如下: hh:mm:ss
如果时间落在特定值之间,我想做一个IF语句,返回1,2或3,对应于第一,第二或第三class。
=IF(AND(E50>8,0,0,E50<16,0,0),"First",(IF(AND(E50>=16,0,0,E50<24,0,0), "Second", "Third")))
这就是现在的样子,但是不起作用。
如果你把三个class次的开始时间放在单元格中并且引用它,就像这样简单:
=IF(AND(D13>=$D$11, D13<$E$11),"First",IF(AND(D13>=$E$11,D13<$F$11),"Second", "Third"))
HOUR使用CHOOSEfunction 。 你应该考虑所有可能的结果。
=choose(hour(e50)/8+1, "third", "first", "second")
作为一个简短的公式:
=CHOOSE(INT(1+MOD(E50,1)*3),"Third","First","Second")
会做你想要的。
如果时间只是时间(没有date),那么
=CHOOSE(INT(1+E50*3),"Third","First","Second")
也会做。
另外这个公式应该是非常快的;)
编辑
为了使它完全“可变”,你需要这样的东西(时间表在I51:J53 ascendenting order):
=INDEX($J$51:$J$53,COUNTIF($I$51:$I$53,"<="&MOD(E50,1))+IF(COUNTIF($I$51:$I$53,">"&MOD(E50,1))=3,3))
它看起来像这样:
注意:如果你把从0:00到0:00的class次分开,那么表格看起来就像:
12:00 AM | Third 06:01 AM | First 12:22 PM | Second 10:54 PM | Third
那么你可以跳过公式来:
=INDEX($J$51:$J$54,COUNTIF($I$51:$I$54,"<="&MOD(E50,1)))
因为+IF(COUNTIF($I$51:$I$53,">"&MOD(E50,1))=3,3)
只是为了没有发现任何东西(这将是最后一class)…