仅当两个单元格都不是空白时才使用 arrayformula 执行计算?

Perform calculation only if both cells are not blank with arrayformula?

我很难理解我在 google sheet 中的逻辑出了什么问题。

想象一下,如果我有两列日期(A 列和 G 列)。我有一个空列来计算日期差异(A 和 G),并使用数组公式包含 start/end 日期。

我写了以下内容:

=ARRAYFORMULA(IF(AND(NOT(ISBLANK(A2:A)), NOT(ISBLANK(G2:G))),DAYS(A2:A,G2:G)+1))

但它 return 第一行对我来说是假的,即使单元格 A 和 G 都有日期,并且数组公式没有填写后续行。

如果我使用 OR 运算符更改为以下内容:

=ARRAYFORMULA(IF(OR(NOT(ISBLANK(A2:A)), NOT(ISBLANK(G2:G))),DAYS(A2:A,G2:G)+1))

它确实有效,但不是我希望的那样。如果任一列被填充,它会产生 -44468 或 44468;如果两列均未填充,则生成 1.

我如何修改上面的代码,以便如果单元格 A 和 G 都不为空,则只执行日期差异的计算,否则 return 为 NULL 或空白?

而且我希望使用 arrayformula,这样我以后就不必将公式复制到每一行中了。

不要将 AND/OR 与 ARRAYFORMULA

一起使用
=ARRAYFORMULA(IF(ISBLANK(A2:A) + ISBLANK(G2:G) > 0,,DAYS(A2:A,G2:G)+1))
ARRAYFORMULA

下不支持

AND & OR 操作

而不是 AND 使用 *

=ARRAYFORMULA(IF((NOT(ISBLANK(A2:A)))*(NOT(ISBLANK(G2:G))), DAYS(A2:A, G2:G)+1), )

而不是 OR 使用 +

=ARRAYFORMULA(IF((NOT(ISBLANK(A2:A)))+(NOT(ISBLANK(G2:G))), DAYS(A2:A, G2:G)+1), )

的确,我学到了一些新东西 - 使用 IFANDOR 逻辑函数处理数组公式的布尔代数。

我设法让另一个解决方案产生了正确的结果。

=ARRAYFORMULA(IF((A2:A<>"")*(G2:G<>""), DAYS(A2:A,G2:G)+1,""))