【问题标题】:ARRAYFORMULA in Google Sheets with nested array functions具有嵌套数组函数的 Google 表格中的 ARRAYFORMULA
【发布时间】:2016-02-23 17:42:58
【问题描述】:

谷歌表格功能arrayformula的文档说

允许将从数组公式返回的值显示到多行和/或多列中,以及对数组使用非数组函数。

这在以下情况下运行良好,只需将列 A 中的所有值除以五:

=arrayformula(A2:A / 5)

现在我想将每一行的结果下限为 0,即在行 n 我想计算 max(An, 0)。这是我的非工作尝试:

=arrayformula(max(A2:A / 5, 0))

max 本身可以在不使用arrayformula 的情况下完美运行,也就是说,如果我在所有行中填写max(A2 / 5, 0),我就会得到我想要的。我希望max 函数对两个单个值进行操作,即在 An 中找到的单个值和常量 0。arrayformula 方法不起作用的原因是 max “窃取”范围,将整个范围 A2:A 聚合为一个数字。因此,arrayformula 仅对这个数字进行操作,并完全忽略了A2:A 范围,从而为所有单元格生成相同的值。

如何使arrayformula 解释范围A2:A,或者更确切地说,如何防止max 函数这样做并让它对两个单个值进行操作?

(我可以改用if 函数来解决这个问题,但这似乎不是特别优雅并且需要大量代码重复,特别是因为我的真正问题使用了更多涉及的算术以及minmax.)

【问题讨论】:

  • “下限”是什么意思?请提供输入值列表和所需输出列表的示例。
  • 下限我的意思是结果应该至少为0。因此max。除以 5 只是为数组公式提供一些有意义的示例。输入=10 -> 输出=2。输入=-10 -> 输出 = 0。
  • 请提供如下示例:输入 = {1, 2, -3, 5, 10, 0, -1},输出 = {1,2,5,10}。看起来你想要的功能是filter()
  • 输入={10, 5, 0, -5, -10} -> 输出={2, 1, 0, 0, 0}
  • 请提供更多关于您想要什么的说明。你想让函数返回一个值还是一个数组?您的问题令人困惑,因为 maxmin 都返回单个值,但您问的是 arrayformula 吗?您是在询问您的功能优化,在这种情况下您真的应该提供实际代码吗?

标签: google-sheets array-formulas


【解决方案1】:

MAX 是一个聚合函数:这些函数对一组值执行计算并返回单个值。您可能需要检查这是否有效(假设您在 col A 中的值)

=ArrayFormula(if(len(A2:A),--(A2:A/5>0)*(A2:A/5),))

【讨论】:

  • 谢谢,但问题已经表明max 是一个聚合函数。真正的问题涉及更多,并且需要更多与min 等的嵌套。因此,您的解决方案将适用于我发布的 SSSCE,但不能解决一般问题。
  • 好的。如果您不显示它,就无法看到“一般问题”。正如丹尼尔已经提到的那样,对最终目标进行一些澄清肯定会有所帮助。
【解决方案2】:

你有两个选择:

=arrayformula(if(A2:A>0,A2:A/5,0))

=arrayformula(filter(A2:A,A2:A>0)/5)

当有负数时,第一个选项会给你零。第二个选项将跳过零,因此您最终可能会得到一个较短的数组。

【讨论】:

  • 感谢您的努力,@daniel,但正如我所说,我可以使用 if 函数轻松解决此问题,但我真正的问题更多涉及简单的 if 不起作用。我认为如果我使问题变得更复杂,这将无济于事。请注意,对于filter 的解决方案,您实际上首先不需要arrayformula
猜你喜欢
  • 1970-01-01
  • 2017-11-08
  • 2020-10-11
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多