【问题标题】:Perform calculation only if both cells are not blank with arrayformula?仅当两个单元格都不是数组公式为空白时才执行计算?
【发布时间】:2022-01-05 00:52:32
【问题描述】:

我很难理解我在谷歌表格中的逻辑出了什么问题。

想象一下,如果我有两列带日期(A 列和 G 列)。我有一个空列来执行日期差(A 和 G)的计算,并使用数组公式包含开始/结束日期。

我写了以下内容:

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

但它在第一行向我返回 FALSE,即使单元格 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 都不为空,则只执行日期差的计算,否则返回为 NULL 或空白?

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

【问题讨论】:

  • 你为什么用excel标记这个?
  • 好吧,我认为问题出在逻辑部分,所以有点 excel 会是相似的。你能对此有所了解吗?
  • Arrayformula 不适用于和/或

标签: excel google-sheets google-sheets-formula array-formulas


【解决方案1】:

不要将 AND/OR 与 ARRAYFORMULA 一起使用

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

【讨论】:

  • 感谢@Mike Steelson。这确实有效。
【解决方案2】:

AND & OR 操作在ARRAYFORMULA 下不受支持

*代替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), )

【讨论】:

  • 非常感谢。我已经测试了你的公式,但它返回为错误,设法按照下面的方法对其进行调整以工作=ARRAYFORMULA(IF(NOT(ISBLANK(A2:A))*NOT(ISBLANK(G2:G)), DAYS(A2:A, G2:G)+1,"")) 但这个概念就在那里。我刚知道这叫做布尔代数。
  • @Ryan 已修复。答案已更新。顺便说一句 NOT(ISBLANK(<> 不一样
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    相关资源
    最近更新 更多