【问题标题】:Google Sheet double TRUE giving a FALSEGoogle Sheet double TRUE 给出 FALSE
【发布时间】:2022-01-13 21:45:24
【问题描述】:

我遇到了一个奇怪的情况,2 TRUE 给出了 FALSE。

我得到了这个公式(我将它简化为只有我感兴趣的情况以用于调试目的。:

=ARRAYFORMULA(
IF(ROW(JS7:JS)=7,JR7+1,
    SWITCH($F7:$F,
        "M",1,
        "D",2,
        "W",3,
        "B",IF(AND(JS$7 >= 'A 2021'!$E7:$E,mod(('A 2021'!$E7:$E-JS$7),14)=0),$D7:$D,4),
        "A",5,
        "O",6,
        0)
    )
)

这个公式基本上检查该行是否为第7行,如果是,则将前一个日期加1以获得第二天(这部分很好),否则它进入Switch返回一个值(0到6)基于其他列(在我的情况下,它是“B”,应该返回 4)。

公式中的这部分返回一个 FALSE:

AND(JS$7 >= 'A 2021'!$E7:$E,mod(('A 2021'!$E7:$E-JS$7),14)=0

然而JS$7 >= 'A 2021'!$E7:$E(检查我们是否超过当前日期)为真,mod(('A 2021'!$E7:$E-JS$7),14)=0(使用模数检查我们是否每 2 周)也是真

我试图用JS$7 >= 'A 2021'!$E7:$E 替换返回的值 4 以查看它的值,它是 TRUE,对于 mod() 也是如此。但是当我尝试使用 AND() 时,它返回 FALSE,然而,AND() 是由前面的部分组成的,它们都返回 TRUE。

我在这里犯了明显的错误还是有什么可疑之处?

【问题讨论】:

    标签: excel if-statement google-sheets boolean nested-if


    【解决方案1】:

    ARRAYFORMULA 下不支持AND。试试:

    =ARRAYFORMULA(
     IF(ROW(JS7:JS)=7,JR7+1,
        SWITCH($F7:$F,
            "M",1,
            "D",2,
            "W",3,
            "B",IF((JS$7 >= 'A 2021'!$E7:$E)*(MOD(('A 2021'!$E7:$E-JS$7),14)=0),$D7:$D,4),
            "A",5,
            "O",6,0)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多