我有一个由2列组成的数组,每个单元格都应该执行一个属于它的前身的加法操作。数组的长度取决于长度变化的第三列。因此,我不再使用ArrayFormula来执行操作:
=ARRAYFORMULA($D2:D+$C3:C)从单元格D3开始,这应该使用它的前身行的值,并添加它的左邻居列的值。不幸的是,这是因为ArrayFormula不支持不同长度的数组,因此无法工作。
解决这个问题的第一步是手动定义数组,使它们保持相同的长度:
=ARRAYFORMULA($D2:D290+$C3:C291)这很管用,但我发现它的表现太慢了。我可以逐个观察它填充柱状细胞。这取决于所需的预计算,而这些都是从下一个计算开始的事件。这似乎不能并行化。
问题1:是否有更快地执行此操作的方法?只要我将数组保持一定的长度,我就可以在每个单元格中使用简单的加法操作,但这无助于解决第二个问题。
问题2:是否有办法对不同长度的阵列进行这些计算?
发布于 2021-04-27 14:22:14
我加了一张新的工作表(“埃里克帮助”)。在该页中,我删除了D列中的所有内容,包括标题,并将其替换为D1中的以下公式:
=ArrayFormula({"Div/SLR-"&CHAR(10)&"Kumuliert";IF(A2:A="";;SUMIF(IF(ROW(A2:A);ROW(A2:A));"<="&ROW(A2:A);C2:C))})
严格来说,头中间的&CHAR(10)&并不是必需的;我只是觉得它是一个更整洁的工作表,因为它允许对标题进行控制,并减少列的宽度。
这个公式的其余部分用通俗易懂的英语基本上是:“从C列中继续将小于或等于D列中每一行的行相加,逐个向下移动。”
至于您的工作表中处理速度慢的问题,您的工作表中有超过31,000行,这意味着您的公式必须全部处理它们,尽管它们中的大多数都是不必要的。您会注意到,我添加的工作表在行和列中都被裁剪,包含的内容仅略多于您可能需要的内容;因此,在加载A1公式时,我的公式处理会尽快完成。
另外,我不清楚为什么你的A1公式要求从2020年3月3日开始接收数据,而你的第一个“Div/SLR-列表”日期直到6月份才开始。我建议将A1公式中的"from“日期替换为引用K2。
https://stackoverflow.com/questions/67278937
复制相似问题