仅当两个单元格都不是空白时才使用 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), )
的确,我学到了一些新东西 - 使用 IF
、AND
和 OR
逻辑函数处理数组公式的布尔代数。
我设法让另一个解决方案产生了正确的结果。
=ARRAYFORMULA(IF((A2:A<>"")*(G2:G<>""), DAYS(A2:A,G2:G)+1,""))
我很难理解我在 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), )
的确,我学到了一些新东西 - 使用 IF
、AND
和 OR
逻辑函数处理数组公式的布尔代数。
我设法让另一个解决方案产生了正确的结果。
=ARRAYFORMULA(IF((A2:A<>"")*(G2:G<>""), DAYS(A2:A,G2:G)+1,""))