我有一个看起来很简单的问题,但我无法绕过它。我有一个大型数据库,我有两个单独的列,不幸的是需要保持这种方式,它们共同定义事件的时间:列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)
但我不知道如何在一个声明中同时将所有这些结合起来。有人可以帮忙吗?
答案 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。
<强>结果:强>