停止将Google数组公式从工作表扩展到50,000行

时间:2018-07-12 13:34:09

标签: google-sheets

我有一个数组公式,已经设法将其汇总为:

=ARRAYFORMULA(if(row(B:B)=1,"Status",(if(D:D="","",IF(D:D<today(),CONCAT("Overdue by ",(TODAY()-D:D) & " days"),IF(D:D<TODAY()+30,CONCAT("Due in ",(TODAY()-D:D) & " days"),if(D:D>today(),"Not Due","")))))))

由于某种原因,它使工作表展开得比我用空白单元格所需的大得多。我最多只需要500个。有什么想法可以阻止这种情况发生?

4 个答案:

答案 0 :(得分:2)

在极端情况下,您可以将公式包装在ARRAY_CONSTRAIN中,并预定义最大行数和列数:

=array_constrain(ARRAYFORMULA(if(row(B:B)=1,"Status",(if(D:D="","",IF(D:D<today(),CONCAT("Overdue by ",(TODAY()-D:D) & " days"),IF(D:D<TODAY()+30,CONCAT("Due in ",(TODAY()-D:D) & " days"),if(D:D>today(),"Not Due",""))))))),500,1)

答案 1 :(得分:1)

最后没有答案,但是我注意到ArrayFormula仅在公式与您要定位的第一个单元格不在同一行时才开始扩展工作表,因此在您的情况下,B:B -ArrayFormula应该放在第一行,B2:B-应该放在第二行。

注意:此行为仅适用于存储嵌套函数(例如IF语句)的ArrayFormulas。

答案 2 :(得分:0)

您可能在一个以上的单元格中拥有该公式,并且似乎该公式仅应位于您希望其位于的任何列的第一行中。

答案 3 :(得分:0)

感谢您在此线程中使用指针。我有一个开始的数组公式:

=arrayformula(if(A3:A="","",[do stuff()]))

该公式创建了50,000行,这减慢了所有内容的爬行速度。

我对其进行了编辑,以将数组限制为996行:

=arrayformula(if(A3:A999="","",[do stuff()]))

一切都很好,床单又快如闪电