在 Excel 中链接多个 IF 语句以计算时间的工作班次
Chaining Multiple IF Statements in Excel to Calculate Work Shifts from Times
我正在尝试根据 Excel 工作表中输入的时间计算工作班次。班次分配如下:
If Time >= 05:30 PM & <= 01:30 AM - 1st shift
If Time >= 01:30 AM & <= 09:30 AM - 2nd shift
If Time >= 09:30 AM & <= 01:30 AM - 3rd shift
我正在使用 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"))
知道我做错了什么吗?
第一个问题出在您的班次定义中。由于使用小于或等于运算符,时间 1:30 AM
落在所有三个班次中。这些应更改为小于运算符,例如:
If Time >= 5:30 PM & < 1:30 AM - 1st shift
If Time >= 1:30 AM & < 9:30 AM - 2nd shift
If Time >= 9:30 AM & < 5:30 PM - 3rd shift (note: I corrected an apparent typo here as well)
第二个问题在第一个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")
returns 0.06250
和 TIMEVALUE("5:30 PM")
returns 大约 0.72917
。结果,此 if
语句转换为以下内容:
IF(AND(D2>=0.72917, D2<=0.06250), "1", ...)
D2
不能既大于等于 0.72917
又小于等于 0.06250
。因此,这将始终 return false。
尝试按如下方式重写您的代码:
=IF(D2<TIMEVALUE("1:30 AM"),"1",
IF(D2<TIMEVALUE("9:30 AM"),"2",
IF(D2<TIMEVALUE("5:30 PM"),"3","1")))
我正在尝试根据 Excel 工作表中输入的时间计算工作班次。班次分配如下:
If Time >= 05:30 PM & <= 01:30 AM - 1st shift
If Time >= 01:30 AM & <= 09:30 AM - 2nd shift
If Time >= 09:30 AM & <= 01:30 AM - 3rd shift
我正在使用 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"))
知道我做错了什么吗?
第一个问题出在您的班次定义中。由于使用小于或等于运算符,时间 1:30 AM
落在所有三个班次中。这些应更改为小于运算符,例如:
If Time >= 5:30 PM & < 1:30 AM - 1st shift
If Time >= 1:30 AM & < 9:30 AM - 2nd shift
If Time >= 9:30 AM & < 5:30 PM - 3rd shift (note: I corrected an apparent typo here as well)
第二个问题在第一个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")
returns 0.06250
和 TIMEVALUE("5:30 PM")
returns 大约 0.72917
。结果,此 if
语句转换为以下内容:
IF(AND(D2>=0.72917, D2<=0.06250), "1", ...)
D2
不能既大于等于 0.72917
又小于等于 0.06250
。因此,这将始终 return false。
尝试按如下方式重写您的代码:
=IF(D2<TIMEVALUE("1:30 AM"),"1",
IF(D2<TIMEVALUE("9:30 AM"),"2",
IF(D2<TIMEVALUE("5:30 PM"),"3","1")))