=ARRAYFORMULA(IF(ISNUMBER(G3:G),IF(AND( G3:G>=7.5,G3:G<=8),"Full Day",IF(AND(G3:G>8,G3:G<24) ,"Full Day+",IF(AND(G3<7.5,G3>=4),"Half Day",IF(G3<4,"Short Leave",)))),))
由于您使用了ARRAYFORMULA函数,您应该使用*代替AND函数。
=ARRAYFORMULA(IF(ISNUMBER(A3:A),IF((A3:A>=7.5)*(A3:A<=8),"Full Day",IF((A3:A>8)*(A3:A<24) ,"Full Day+",IF((A3<7.5)*(A3>=4),"Half Day",IF(A3<4,"Short Leave",)))),))
使用ARRAYFORMULA
函数时,应该使用*
代替AND
函数,使用+
代替OR
函数。
说明
我现在不记得有关此事的官方网站了。在任何情况下。
点1
在ARRAYFORMULA
中,AND
给出一个单一值。而不是TRUE/FALSE的数组。
点2
您还必须记住,在“数学语言”中,TRUE=1
且FALSE=0
意思是
+
| Formula | Result |
+
| =TRUE+2 | 3 |
| =FALSE+2 | 2 |
+
如您所见,可以在布尔值TRUE/FALSE
和1/0
之间互相转换。
第三点
关于AND函数
如果所有提供的参数在逻辑上都为真,则AND函数返回true,如果任何提供的参数在逻辑上为假,则返回false。
把它们结合起来
在数组公式中,我们利用上述信息,而不是在进行比较时使用AND/OR
。
因此,“乘法”(A3:A>=7.5)*(A3:A<=8)
仅在两侧均返回TRUE
时返回 1(表示TRUE
)。所有其他情况都返回 0(表示FALSE
)。这就是AND
函数的确切行为,并且可以在ARRAYFORMULA
中使用。
关于OR函数
如果任何提供的参数在逻辑上为真,则OR
函数返回true,如果所有提供的参数在逻辑上为假,则返回false。
在数组公式中使用+
(“加法”)代替OR
函数时,应用相同的逻辑。
ARRAYFORMULA(IF(LEN(A2:A), <something>, ""))
:) - Robin Gertenbach=ArrayFormula((A1:A>1)<>(B1:B>6))
- General GrievanceAND
是一种聚合函数,SUM
的行为类似于它聚合整个范围。NOT
不是一种聚合函数,因此预计会逐个元素进行操作。我认为可能有多种情况,人们对不同的聚合函数的正确行为有不同的期望。始终将其应用于整个范围可以给出一个简单的经验法则,即聚合在数组公式中不会改变。(这里可能会漏掉一些反例) - Robin Gertenbach