我有这个(非常)长的公式,我需要在 Google 表格中运行,我遇到了限制错误:
There was a problem
Your input contains more than the maximum of 50000 characters in a single cell.
有解决办法吗?
我的公式是:
=ARRAYFORMULA(SPLIT(QUERY({B!A1:A100; ........ ; CA!DZ1:DZ100},
"select * where Col1 is not null order by Col1 asc", 0), " "))
完整公式为:pastebin.com/raw/ZCkZahpw
为 Pastebin 道歉......我在这里也有一些错误:
注意 1: 由于它是一个长公式,因此它的输出大小应为 ~100 行 × 3 列
注意 2: 到目前为止,我设法绕过了 JOIN
/TEXTJOIN
50000 多个字符,甚至 500000 个单元格的限制
最佳答案
Is there a script to bypass 50000 characters for in-cell formula?
如果 {B!A1:A100; 的长度…………; CA!DZ1:DZ100}
大于 50,000 个字符考虑构建一个为您构建数组的自定义函数。您可以对引用进行“硬编码”,或将它们列为文本范围内的内容,以供您的脚本读取。
然后,生成的公式可能如下所示:
=ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(),
"select * where Col1 is not null order by Col1 asc", 0), " "))
或者像这样
=ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(A1:A1000),
"select * where Col1 is not null order by Col1 asc", 0), " "))
(假设您有 1000 个引用)。
自定义函数之所以有效,是因为它在 Google 表格端而不是具有超出单元格内容限制的公式,它将只使用几个字符,并且因为通过使用良好的做法,可以使它花费的时间少于 30 秒他们的执行限制。
值得注意的是,如果使用 MYCUSTOMFUNCTION()
变体(不带参数),它只会在电子表格打开时重新计算,但 MYCUSTOMFUNCTION(A1:A1000)
每次范围引用中的单元格更改时,都会重新计算变体(以范围引用作为参数)。
引用资料
关于sql - 是否有脚本可以绕过单元格公式的 50000 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54727816/