是否有脚本可以绕过单元格公式的 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中的两个公式{}
数组解
我有这个(非常)长的公式,我需要 运行 在 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中的两个公式{}
数组解