2016-08-01 48 views
2

我有格式化的这样的时刻数据的列移位:hh:mm:ss使用公式来确定来自时间数据

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

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

这就是它现在的样子,但它不起作用。

回答

2

如果你把你的三个转变细胞开始时间和引用它们,它是如此简单:

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

enter image description here

+0

这也行得通,如果我的班次开始时间不是正好8点,而是更像7:10:00 A.M.到下午3点10分或7:10:00至15:10:00 –

+0

@ J.A。只需更改我从公式中借用的公式中的8/16/24即可。 – Chrismas007

+0

'HOUR(E50)> 8'是'HOUR(E50)> = 8'吗?是否需要“小时(E50)<24”? – Jeeped

2

作为短公式:

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

做你想做的事。

如果时间

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

也将这样做的时间(不包含日期),然后。

而且这个公式应该是非常快;)

编辑

使之完全 “变量” 你需要像这样(的时间表是在I51:J53 ascendenting顺序):

=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

注意:如果分手了,从晚上12点之前去过去的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)只为案件没有被发现(这将是最后一次移位)...

+0

补货!我花时间包括一张图片! – Jeeped

+0

这有效,但你能解释它是如何做到的,我有点惊讶。 –

+0

@Jeeped一个链接...和一个描述; P ...仍然,理论上我们都是错误的......第一个转变在** 8和16之间下降......这不包括8和16本身.. (MOD(E50,1)> = 2/3,“Second”,IF(MOD(E50,1)> 1/3,“First”,“Third” ))'是正确的... –

4

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

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

enter image description here

+1

不错的形象! –

0

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

=CHOOSE(HOUR(R3)+1, "C", "C", "C", "C","C","C", "A", "A", "A", "A", "A", "A", "A","A","B","B","B","B","B","B","B","B","C","C") 
相关问题