2016-06-28 110 views
1

我想根据在Excel工作表中输入的时间来计算工作班次。移位分配如下:在Excel中链接多个IF语句以计算从时间的工作班次

如果时间> = 05:30下午& < =上午01点30分 - 第一换档

如果时间> =上午01点30 & < =上午09点30 - 第二班

如果时间> = 09:30 & < =凌晨01:30 - 3班次

我使用IF和条件,但仍然是呈现INC直接结果。以下是我正在使用的公式。

=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归因于使用小于或等于运算符的所有三个班次。这些应改为低于运营商,如以下:

如果时间> = 5:30 PM & <上午01时30 - 第一换档

如果时间> =上午01时30分& < 9:30 AM - 第二班

如果时间> = 9:30 AM & < 5:30 PM - 3班次(注:我在这里纠正一个明显的错字以及)

第二个问题是在所述第一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。因此,这将始终返回错误。

尝试重写代码如下:

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

你是完美的@Brett。非常感谢。它现在工作。 –