【发布时间】:2021-07-20 13:16:27
【问题描述】:
我有一个包含 2 列的数组,其中每个单元格都应该执行属于其前身的添加操作。 数组的长度取决于长度变化的第三列。所以我决定使用 ArrayFormula 来执行操作:
=ARRAYFORMULA($D2:D+$C3:C)
从单元格 D3 开始,这应该取其前一行的值并添加其左侧相邻列的值。不幸的是,这不起作用,因为 ArrayFormula 不支持不同长度的数组。
我解决这个问题的第一步是通过手动定义数组来使它们具有相同的长度:
=ARRAYFORMULA($D2:D290+$C3:C291)
这可行,但我发现它的性能太慢了。我可以从字面上看它逐个单元格地填充列单元格。这取决于所需的预计算,这些预计算总是引发 CellChanged-Events 开始下一次计算。看来,这不能并行化。
问题 1:有没有办法更快地执行此操作?只要我保持数组的长度固定,我就可以在每个单元格中使用简单的加法运算,但这对我的第二个问题没有帮助。
问题 2:有没有办法对不同长度的数组进行这些计算?
Example how it looks (fixed array-length) (Cropped to show, how the values really are added
【问题讨论】:
-
您的 C 或 D 列是否也填充了公式?我刚刚测试了 444 行,数组公式立即计算了它们。
-
您好,C 列由另一个 ArrayFormula(带有嵌套查询)填充。 D 列是我要填充的列。
-
你能分享一份你的工作表吗?
-
我添加了外部数据以将此工作表填充到工作表本身,并将 C 列中的填充查询更改为此子集。这是我真正的测试值。一个有趣的事实是,ArrayFormular 的工作方式再次不同,并使用 0 而不是 2 行填充列,其中 evalues 出现在 C 列中。docs.google.com/spreadsheets/d/…
标签: arrays performance google-sheets array-formulas