【问题标题】:Is there a script to bypass 50000 characters for in-cell formula?是否有脚本可以为单元格公式绕过 50000 个字符?
【发布时间】:2019-07-10 16:31:09
【问题描述】:

我需要在 Google 表格中运行这个(非常)长的公式,但遇到了限制错误:

有问题

您的输入在单个单元格中包含超过 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 个字符,那么您可能需要回到绘图板上重新考虑您的方法。你能给我们一步一步地分解你想要实现的目标吗?如果不知道您的目标是什么,我们无法提供任何指导。
  • @DimuDesigns 答案已更新。逐步分解:每个范围都包含空单元格(例如,没有)或空单元格和带有 3 个单词的单元格的混合。目标是使用{} 构造数组,并通过查询从该数组中过滤出空单元格。然后将这些 3 个单词的单元格拆分为 3 个单词列
  • 如果每个范围内的其余单元格为空,请创建一个开放范围:A!A:A 而不是A!A1:A100。这几乎减少了 50% 的大小。
  • 也去掉select *asc"where Col1!=''order by Col1"就够了。我仍然认为您不会达到
  • 我投票决定将此问题作为离题结束,因为它要求我们推荐一种解决方法,以解决 Google 的限制,这似乎非常合理。

标签: sql google-apps-script google-sheets array-formulas google-sheets-formula


【解决方案1】:

是否有脚本可以绕过 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】:

    更新:

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

    _________________________________________________________________________

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多