Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否有一个脚本可以跳过单元格内公式的50000个字符?_Sql_Google Apps Script_Google Sheets_Array Formulas_Google Sheets Formula - Fatal编程技术网

Sql 是否有一个脚本可以跳过单元格内公式的50000个字符?

Sql 是否有一个脚本可以跳过单元格内公式的50000个字符?,sql,google-apps-script,google-sheets,array-formulas,google-sheets-formula,Sql,Google Apps Script,Google Sheets,Array Formulas,Google Sheets Formula,我有一个(疯狂的)长公式,我需要在谷歌表格中运行,我遇到了极限错误: 有个问题 您的输入在单个单元格中最多包含50000个字符 是否有解决方法? 我的公式是: =ARRAYFORMULA(SPLIT(QUERY({B!A1:A100; ........ ; CA!DZ1:DZ100}, "select * where Col1 is not null order by Col1 asc", 0), " ")) 完整的公式是:pastebin.co

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

有个问题 您的输入在单个单元格中最多包含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个

是否有一个脚本可以跳过单元格内公式的50000个字符

如果<代码> {{b.a1:a100;……;ca!dZ1:dZ100}大于50个字符,可以考虑为您建立一个自定义函数来构建数组。您可以对引用进行“硬编码”,或者将它们列为脚本要读取的范围内的文本

然后,得到的公式可以如下所示:

 =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 Sheets端,而不是具有超过单元格内容限制的公式,它将只使用几个字符,而且通过使用良好的实践,可以使它们的执行时间少于30秒限制

值得注意的是,如果使用
MYCUSTOMFUNCTION()
变量(不带参数),则仅在打开电子表格时才会重新计算变量,但每次范围引用中的单元格发生更改时,都会重新计算
MYCUSTOMFUNCTION(A1:A1000)
变量(带范围引用作为参数)

参考资料

更新: 我设法输入了多达323461个字符作为公式!通过使用
CTRL
+
H
将简单的
=SUM(1)
公式替换为这个答案中的巨大公式:

___________________________________________________________ 经过一些研究,似乎没有任何解决办法来解决这个问题


建议的节约(缩短:
A!A:A
,删除:
select*
asc
,缩短:
“where Col1!=”order by Col1“
)减少了一点,其余部分在VR
{
数组解决方案。

如果您的公式超过50000个字符,则可能需要回到绘图板,重新考虑您的方法。你能把你想要达到的目标一步一步地告诉我们吗?如果不知道您的目标是什么,我们无法提供任何指导。@DimuDesigns回答已更新。分步分解:每个区域包含空单元格(如nothing)或空单元格与包含3个单词的单元格的混合。目标是用
{}
构造数组,并用query从该数组中过滤出空单元格。然后将这些3个字的单元格拆分为3列字。如果其余单元格在每个区域中为空,请创建一个开放区域:
a!A:A
而不是
A!A1:A100
。这几乎减少了50%的大小。同时删除
select*
asc
“where Col1!=”order by Col1“
应该足够了。我仍然不认为你会达到我投票结束这个问题作为离题,因为它要求我们建议一个工作,绕过谷歌的限制,这似乎是合理的。