【发布时间】: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