是否有脚本为单元内公式绕过50000个字符?

pla*_*er0 1 sql google-sheets google-apps-script array-formulas google-sheets-formula

我需要在Google表格中运行这个(很长)公式,并且遇到了极限错误:

出问题了

您的输入在一个单元格中最多包含50000个字符。

有没有解决方法?


我的公式是:

=ARRAYFORMULA(SPLIT(QUERY({B!A1:A100; ........ ; CA!DZ1:DZ100}, 
 "select * where Col1 is not null order by Col1 asc", 0), " "))
Run Code Online (Sandbox Code Playgroud)

完整公式是: pastebin.com/raw/ZCkZahpw

为Pastebin道歉...我在这里也遇到了一些错误:

注1:由于它是一个很长的公式,因此它的输出应为〜100行×3列。 注2:到目前为止,我设法绕过了JOIN/ TEXTJOIN对于50000+个字符,甚至50000个字符限制

Rub*_*bén 5

是否有脚本为单元内公式绕过50000个字符?

如果长度{B!A1:A100; ........ ; CA!DZ1:DZ100}大于5万个字符,请考虑构建一个自定义函数来为您构建数组。您可以“硬编码”引用,也可以将它们作为文本列出,以供脚本读取。

然后,结果公式如下所示:

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))
Run Code Online (Sandbox Code Playgroud)

或像这样

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(A1:A1000), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))
Run Code Online (Sandbox Code Playgroud)

(假设您有1000个引用)。

自定义函数之所以有效,是因为它在Google表格的一侧,而不是具有超出单元格内容限制的公式,它将仅使用几个字符,并且由于采用了良好的做法,有可能使其花费的执行时间少于30秒他们。

值得注意的是,如果使用MYCUSTOMFUNCTION()变量(不带参数),则仅在打开电子表格时才会重新计算,但MYCUSTOMFUNCTION(A1:A1000)每次范围引用中的单元格更改时,变量(以范围引用作为参数)都将重新计算。

参考文献