Google表格中的ARRAYFORMULA具有嵌套数组函数

时间:2016-02-23 17:42:58

标签: google-sheets array-formulas

Google表格功能// It should contain only the filename not the complete path header("Content-Disposition: attachment; filename=".basename($archive_file_name)); // Adding file-size to header header("Content-Length: " . filesize($archive_file_name)); // Check that is path to zip with filename readfile($archive_file_name); 的文档说明

  

允许将从数组公式返回的值显示为多行和/或列,并将非数组函数与数组一起使用。

这在以下情况下效果很好,它只是将 A 列中的所有值除以5:

arrayformula

现在我想将每行中的结果下限0,即在行 n 中我想计算=arrayformula(A2:A / 5) 。这是我的非工作尝试:

max(An, 0)

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

如何使A2:A解释范围arrayformula,或者更确切地说,如何阻止A2:A函数执行此操作并使其对两个单值进行操作?

(我可以用max函数解决问题,但这似乎并不特别优雅,需要大量的代码重复,特别是因为我的真正问题是使用更多涉及的算术和{{{{ 1}}和if。)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您有两种选择:

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

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

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