使用公式确定从时间数据移位

时间:2016-08-01 18:58:48

标签: excel datetime excel-formula

我有一列时间数据格式如下:hh:mm:ss

如果时间落在某些值之间,我想制作一个返回1,2或3的IF语句,对应于第一,第二或第三班。

=IF(AND(E50>8,0,0,E50<16,0,0),"First",(IF(AND(E50>=16,0,0,E50<24,0,0), "Second", "Third")))

现在看起来像什么,但它不起作用。

4 个答案:

答案 0 :(得分:3)

CHOOSE functionHOUR一起使用。您应该考虑所有可能的结果。

=choose(hour(e50)/8+1, "third", "first", "second")

enter image description here

答案 1 :(得分:2)

作为一个简短的公式:

=CHOOSE(INT(1+MOD(E50,1)*3),"Third","First","Second")

会做你想做的事。

如果时间只是时间(没有日期)那么

=CHOOSE(INT(1+E50*3),"Third","First","Second")

也会这样做。

这个公式也应该非常快;)

修改

要使它完全“变量”你需要这样的东西(时间表是在I51:J53上升顺序):

=INDEX($J$51:$J$53,COUNTIF($I$51:$I$53,"<="&MOD(E50,1))+IF(COUNTIF($I$51:$I$53,">"&MOD(E50,1))=3,3))

看起来像这样:

enter image description here

注意:如果你拆分从之前的0:00到过去0:00的班次,那么表格看起来像:

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)仅适用于没有找到任何内容的情况(这将是最后一次转移)......

答案 2 :(得分:1)

如果你将三个班次的开始时间放在单元格中并引用它们,就像这样简单:

=IF(AND(D13>=$D$11, D13<$E$11),"First",IF(AND(D13>=$E$11,D13<$F$11),"Second", "Third"))

enter image description here

答案 3 :(得分:0)

我发现这是将时间转换为3班的最简单方法。加1允许excel在午夜返回到00:59为0.(因此在下面的公式中,选择函数的前六个结果是"C"表示夜班,然后在早上6点,班次变为{{ 1}}日班。等等。"A"是我有时间的单元格。

"R3"