为什么 AND() condition/function 不适用于 ArrayFormula

Why does the AND() condition/function doesn't work with ArrayFomula

AND 函数:如果我删除 Arrayformula() 它工作正常但它不适用于数组公式。
能知道是什么原因吗?

=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",)))),))

如我所说

Since you use the ARRAYFORMULA function you should use * instead of the AND function

=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
在数组公式中,AND 给出一个值。 不是 TRUE/FALSE 的数组。

点 2
您还必须记住在“数学语言”中,TRUE=1FALSE=0

含义

+----------+--------+
| Formula  | Result |
+----------+--------+
| =TRUE+2  |      3 |
| =FALSE+2 |      2 |
+----------+--------+

如您所见,可以在布尔 TRUE/FALSE1/0 数字之间互换。

点 3
关于 AND 函数

The AND function returns true if all the provided arguments are logically true and false if any of the provided arguments are logically false.

综合起来
在数组公式中,我们在进行比较时不使用 AND/OR,而是利用上述信息。

因此,“乘法” (A3:A>=7.5)*(A3:A<=8) 将 return 1(意思是 TRUE)只有双方 return TRUE。所有其他条件return 0(意思是FALSE)。
这是 AND 函数的确切行为,并且确实在 ARRAYFORMULA.

中起作用

关于OR函数

The OR function returns true if any of the provided arguments are logically true and false if all of the provided arguments are logically false.

当使用 + ("addition") 而不是 OR 函数时,在数组公式中应用相同的逻辑。