Excel“嵌套的IF”多行和多行条件

我有一个似乎很简单的问题,但是我无法把头围住。 我有一个大的数据库,我有两个单独的列,不幸的是需要保持这种方式,一起定义事件的时间:列A由整数“1”到“12”,列B由细胞与“PM”或“AM”。 我需要一个单独的列,在上午8点和下午4点之间发生的任何事情都给我一个“1”,其他的都是“0”。 部分问题显然是“12”“PM”行。 到目前为止,我只有这些:

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

,如果在上午8点到上午11点之间发生任何事情,则正确地显示“1”,而不是其余。 我需要把它与:

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

和:

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

但我不知道如何在同一时间将所有这些结合起来。 任何人都可以帮忙吗?

这是一个有趣的练习 – 我确定有十几种方法可以做到这一点,但是我发现:

 =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小时的值。也许你或别人可以提供改进或其他build议。

或者你可以试试这个:

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

简单而直接。 你只需要将你所拥有的等价时间值(在Excel中的0-1之间)进行转换。
然后用8/24(8AM)和16/24(4PM)的AND操作数进行评估。 HTH。

结果:

在这里输入图像说明