【问题标题】:ArrayFormula and "AND" Formula in Google SheetsGoogle 表格中的 ArrayFormula 和“AND”公式
【发布时间】:2017-09-28 09:04:07
【问题描述】:

在 Google 表格中,当使用带有 AND 公式的 ArrayFormula 时,我没有得到应有的结果。

A|B
2|7

在C1 中,我将公式设为:=and(A1>5,B1>6) 然后我得到True。如果在 D1 中我将公式设置为:=ArrayFormula(and(A1:A>5,B1:B>6)) 我得到的结果为False。

这是我的两个问题:

  1. 为什么没有为列中的所有单元格重复ArrayFormula?
  2. 为什么我得到true 没有ArrayFormula 和False 有Arrayformula?

【问题讨论】:

  • 已经很久了,但据我所知,AND 也不适用于 Excel 中的数组公式。一种解决方法是评估条件的乘积。

标签: google-sheets array-formulas


【解决方案1】:

AND 不适用于数组公式,因为它 ANDs 整个数组一起放在左上角的单元格中,无论维数如何。

即它会检查 "">"" 是否为 FALSE、ANDed 以及它将为左上角单元格返回 FALSE 的任何内容,该结果被向下执行。

您可以使用真值相乘来创建与ARRAYFORMULA 一起使用的ANDing,如下所示:

=ArrayFormula((A1:A>1)*(B1:B>6) = 1)

OR 等价物显然是

=ArrayFormula((A1:A>1)+(B1:B>6) > 0)

【讨论】:

  • 你也可以反过来用,FALSE,空白和0为假,其他都为真。让你做捷径,比如ARRAYFORMULA(IF(LEN(A2:A), <something>, "")) :)
  • 为了好玩,异或:=ArrayFormula((A1:A>1)<>(B1:B>6))
  • 请注意,条件周围需要括号;否则,乘法或加法优先于比较运算符。
  • 谢谢。此外,ARRAYFORMULA 中 AND 的这种行为令人惊讶,似乎违反了最小惊讶原则。顺便说一句,不在 ARRAYFORMULA 内的行为不这样吗?
  • AND 是一个聚合函数,SUM 的行为类似,因为它聚合了整个范围。 NOT 不是聚合,因此需要逐个元素进行。我认为可能存在多种情况,人们对不同聚合函数的正确行为应该有不同的期望。始终将其应用于整个范围给出了一个简单的经验法则,即聚合在数组公式中不会改变。 (我可能在这里遗漏了一些反例)
【解决方案2】:

另一种更简单的方法:

=ARRAYFORMULA(
  IF(H3:H = I3:I = J3:J = TRUE; 1; 0)
)

【讨论】:

    【解决方案3】:

    AND 不与Arrayformula 搭配使用。但是,有一种有趣的方法可以使用 AND 和 OR 运算符,而无需真正使用它们。

    在使用arrayformula 时,为了执行AND 函数,您必须将两个条件相乘,例如

    =arrayformula(if((condition1)*(condition2), value if true, value if false)) 
    

    类似地使用OR 函数是相同的,除了你会添加两个条件而不是“*”符号。

    =arrayformula(if((condition1)+(condition2), value if true, value if false)) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 2021-09-28
      • 2021-03-16
      • 2017-08-24
      • 1970-01-01
      相关资源
      最近更新 更多