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个字符限制
是否有脚本为单元内公式绕过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)
每次范围引用中的单元格更改时,变量(以范围引用作为参数)都将重新计算。
参考文献