是否有脚本可以绕过单元格公式的 50000 个字符?

Is there a script to bypass 50000 characters for in-cell formula?

我有这个(非常)长的公式,我需要 运行 在 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 个字符,请考虑构建一个自定义函数来为您构建数组。您可以 "hard-code" 引用或将它们列为脚本可读取范围内的文本。

那么,生成的公式可能如下所示:

 =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) 变体(带有范围引用作为参数) ) 将在每次范围引用中的单元格更改时重新计算。

参考资料

更新:

我成功地输入了多达 323461 个字符作为公式!通过使用 CTRL + H 我用这个答案中的巨大公式替换了简单的 =SUM(1) 公式:https://webapps.stackexchange.com/a/131019/186471

___________________________________________________________

经过一些研究,似乎没有任何解决方法可以解决这个问题。

建议的节省(缩短:A!A:A,丢弃:select *asc,缩短:"where Col1!=''order by Col1")减少了一点,其余部分分为VR中的两个公式{}数组解