2016-06-28 2 views
1

Excelワークシートに入力された時間に基づいて作業シフトを計算しようとしています。シフトの割り当ては以下の通りです:複数のIF文をExcelで連鎖して時刻から作業シフトを計算する

時間> = 5:30 PM & < = 1時30分AM場合 - 第一シフト

時間> = 1時30分AM & < =午前9時30分AM場合 - 第二シフト

時間が> = 9:30 AM & < = 1時30分AM場合 - 私はIF、AND条件を使用していますが、まだそれが株式会社を見せている第三のシフト

正しい結果。以下は私が使用している式です。

=IF(AND(D2>=TIMEVALUE("05:30:00 PM"),(D2<=TIMEVALUE("01:30:00 AM"))),"1", 
IF(AND(D2>=TIMEVALUE("01:30:00 AM"),(D2<=TIMEVALUE("09:30:00 AM"))),"2","3")) 

Excel worksheet showing shift times

私が間違っているの何任意のアイデア?

答えて

3

最初の問題はシフト定義にあります。 1:30 AMの時間は、より小さいか等価の演算子の使用のために3つのシフトすべてに当てはまる。時間> = 1:30 AM場合は第一シフト

-

< &時間> =午後5時30分の場合1:30:これらは、次のようなより少なくより事業者に変更する必要があります& < 9:30 - 第二シフト

時間> = 9:30 & <午後5時30分の場合 - 第三シフト(注:私はここにも明白なタイプミスを修正)

第二の問題は、最初if文である:

IF(AND(D2>=TIMEVALUE("05:30:00 PM"),(D2<=TIMEVALUE("01:30:00 AM"))),"1",...) 

時間が同時に5:30:00 PMより大きく01:30:00 AM未満であることができません。 Excelの時刻は数値として保存されます。 TIMEVALUE("1:30 AM")0.06250TIMEVALUE("5:30 PM")は約0.72917を返します。その結果、このifステートメントは、以下に変換:

IF(AND(D2>=0.72917, D2<=0.06250), "1", ...) 

D2はより-大きいかまたは等しく対0.72917両方より少なくよりもしくは等しく対0.06250ことができません。その結果、常にfalseが返されます。

は、次のようにコードを書き換えてみます

=IF(D2<TIMEVALUE("1:30 AM"),"1", 
    IF(D2<TIMEVALUE("9:30 AM"),"2", 
     IF(D2<TIMEVALUE("5:30 PM"),"3","1"))) 
+0

あなたは@Brett最適です。どうもありがとう。それは今働いている。 –

関連する問題