2014-08-27 162 views
1

我有一个问题,看起来很简单,但我无法将头围住它。我有一个大型数据库,并且我有两个单独的列,不幸的是需要保持这种方式,它们一起定义事件发生的时间:列A由整数“1”到“12”组成,列B由具有“PM”或“AM”的细胞。我需要一个单独的列,为上午8点到下午4点之间发生的任何事情提供一个“1”,其他所有事情都发生“0”。部分问题显然是“12”“PM”行。这就是我到目前为止有:Excel的“嵌套IF”多列和每行多个条件

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

,其推出正确的“1”,如果有的话上午8点和11点,而不是其他国家之间发生的事情。我需要将其联合:

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

和:

=IF(AND(A1=12),IF(B1="PM",1,0),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

或者你可以试试这个:

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

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

结果:

enter image description here

+0

谢谢你们两个,两件事情为我工作: – Natrajx 2014-08-29 09:11:18

+0

= IF(AND(A1> = 8,A1 <= 11),IF(B1 =“AM (AND)(A1 = 12),IF(B1 =“PM”,1,0),0)+ IF IF(B1 =“PM”,1,0),0) – Natrajx 2014-08-29 09:12:50

+0

= - OR(AND(OR(A1 = {8,9,10,11}),B1 =“AM” = {1,2,3,4,12}),B1 =“PM”)) – Natrajx 2014-08-29 09:13:19