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

问题描述 投票:2回答:2

我有这个(疯狂的)长公式,我需要在Google表格中运行,我遇到了极限错误:

There was a problem

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

这有解决方法吗?


我的公式是:

=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个总细胞限制

sql google-apps-script google-sheets array-formulas google-sheets-formula
2个回答
5
投票

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

如果{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)变量(带有范围引用作为参数)变化。

参考


2
投票

UPDATE:

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

___________________________________________________________

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

建议的节省建议(缩短:A!A:A,下降:select *asc,缩短:"where Col1!=''order by Col1")减少了一点,休息在VR {}阵列解决方案中分成两个公式。

© www.soinside.com 2019 - 2024. All rights reserved.