2016-08-01 45 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") 
相關問題