使用公式来确定从时间数据的转换

我有一列时间数据格式如下: 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)…