2014-08-27 164 views
1

我有一個問題,看起來很簡單,但我無法將頭圍住它。我有一個大型數據庫,並且我有兩個單獨的列,不幸的是需要保持這種方式,它們一起定義事件發生的時間:列A由整數「1」到「12」組成,列B由具有「PM」或「AM」的細胞。我需要一個單獨的列,爲上午8點到下午4點之間發生的任何事情提供一個「1」,其他所有事情都發生「0」。部分問題顯然是「12」「PM」行。這就是我到目前爲止有:Excel的「嵌套IF」多列和每行多個條件

=IF(AND(A1>=8, A1<=11),IF(B1="AM",1,0),0) 

,其推出正確的「1」,如果有的話上午8點和11點,而不是其他國家之間發生的事情。我需要將其聯合:

=IF(AND(A1>=1, A1<=4),IF(B1="PM",1,0),0) 

和:

=IF(AND(A1=12),IF(B1="PM",1,0),0) 

,但我不知道如何將所有這些同時結合在一個聲明。任何人都可以幫忙嗎?

回答

1

這是一個有趣的練習 - 我敢肯定有一打的方式來做到這一點,但這裏是我的發現:

=IF(AND(TIME(IF(B1="PM",A1+12,A1),0,0)>=TIME(8,0,0),TIME(IF(B1="PM",A1+12,A1),0,0)<=TIME(11,0,0)),1,0) 

進去C1

所以,我的方法是 -

如果B1是PM,然後給我A1 + 12(小時),否則就給我A1

IF(B1="PM",A1+12,A1) 

返回時間值等於多小時

TIME(IF(B1="PM",A1+12,A1),0,0) 

檢查,看看它是否比的正是8小時值...

TIME(IF(B1="PM",A1+12,A1),0,0)>=TIME(8,0,0) 

然後把它包在And語句具有相同的功能,詢問是否它小於11.

我不喜歡它重複自己,我必須使用TIME(8,0,0)返回8小時值。也許你或別人可以提供改進或其他建議。

1

或者你可以試試這個:

=IF(AND(TIMEVALUE(A1&" "&B1)>=(8/24),TIMEVALUE(A1&" "&B1)<=(16/24)),1,0) 

簡單而直接。你只需要將你所擁有的等價時間值(在Excel中的0-1之間)進行轉換。
然後只需使用具有8/24(8AM)和16/24(4PM)的操作數對其進行評估。 HTH。

結果:

enter image description here

+0

謝謝你們兩個,兩件事情爲我工作: – Natrajx 2014-08-29 09:11:18

+0

= IF(AND(A1> = 8,A1 <= 11),IF(B1 =「AM (AND)(A1 = 12),IF(B1 =「PM」,1,0),0)+ IF IF(B1 =「PM」,1,0),0) – Natrajx 2014-08-29 09:12:50

+0

= - OR(AND(OR(A1 = {8,9,10,11}),B1 =「AM」 = {1,2,3,4,12}),B1 =「PM」)) – Natrajx 2014-08-29 09:13:19