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

时间:2014-08-27 22:18:12

标签: excel

我有一个看起来很简单的问题,但我无法绕过它。我有一个大型数据库,我有两个单独的列,不幸的是需要保持这种方式,它们共同定义事件的时间:列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)

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

2 个答案:

答案 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 :(得分:1)

或者你可以试试这个:

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

简单直接。您只需将所拥有的内容转换为其等效时间值(Excel中的0-1之间) 然后使用 AND 操作数与8/24(8AM)和16/24(4PM)进行评估。 HTH。

<强>结果:

enter image description here