【问题标题】:Excel "Nested IF" of multiple columns and multiple conditions per row多列和每行多个条件的Excel“嵌套IF”
【发布时间】:2014-08-27 22:18:11
【问题描述】:

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

但我不知道如何将所有这些同时组合到一个语句中。有人可以帮忙吗?

【问题讨论】:

    标签: excel


    【解决方案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 小时的值。也许您或其他人可以提供改进或其他建议。

    【讨论】:

      【解决方案2】:

      或者你可以试试这个:

      =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。

      结果:

      【讨论】:

      • =IF(AND(A1>=8, A1=1, A1
      • =--OR(AND(OR(A1={8,9,10,11}),B1="AM"), AND(OR(A1={1,2,3, 4,12}), B1="PM"))
      • 但是,我想以某种形式将这些公式包含在我的数据透视表的“添加计算字段”选项中,但这些公式不起作用,但只在数据透视表中返回“0” .知道我需要改变什么才能让它工作吗?请注意,对于计算字段选项,我确实将“A1”更改为列名“小时”,并将“B1”更改为列名“AM/PM”
      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 2019-10-14
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多