【发布时间】:2018-03-01 23:37:08
【问题描述】:
我有一个包含约 200 个标签的大型复杂电子表格。由于大量的公式计算,它打开/加载非常缓慢(最多 5 分钟)。我正在尝试优化公式,以便电子表格更快地打开/加载。
最常见的计算之一是将每个选项卡中的大约 60 个单元格乘以“Sheet1!B4”中的一个变量(工作表 1,单元格 B4)。我预计该值可能会在一年左右更改一次,这将需要更新所有 200 个选项卡,每个选项卡至少包含 60 个单元格。
对值进行硬编码并在所有选项卡中的所有受影响单元格中每年更新一次会更好吗?
或者是否可以以某种方式引用它,这不会影响性能,最好让它更快?
以下是我正在考虑的三个选项:
硬编码值:
=countif(C$10:C$30,$B60) * 10参考单元格:
=countif(C$10:C$30,$B60) * Sheet1!:B4使用单个单元格的命名范围:
=countif(C$10:C$30,$B60) * PARAMETER_VAL其中PARAMETER_VAL是引用Sheet1!B4的命名范围
以上哪个最快?
有没有其他方法可以让它更快,我可能会错过?
【问题讨论】:
-
这可能更适合 webapps.stackexchange.com 。您是否尝试过使用数组公式扩展到相邻单元格?最快的方法总是完全删除公式,只留下一个静态值(即将计算移动到一个应用程序脚本函数,该函数从各个选项卡上的各个单元格读取输入,计算结果数组,然后将给定数组写入给定标签)。
-
如果您知道有些单元格很少更新,您最好使用自定义 Apps 脚本函数计算这些单元格,并仅在需要时或按计划执行它们。
-
感谢您的 cmets。 tehhowch 和 Argyll ,这些单元格依赖于每天更新 1-2 次的其他单元格。人们希望看到实时更新。我可能可以使用 onEdit 触发器,但它可能会触发多次,并且脚本可能会超时或与其他人的编辑重叠......我认为这是不可行的,除非我遗漏了更精细的点。 @pnuts 感谢您的关注,我现在已经更新了帖子:-)
-
对于这么大的电子表格,我认为使用适当的数据库更合适
-
@LưuVĩnhPhúc 我同意。我们正在迁移到 MySQL 数据库,但在那之前...
标签: optimization google-sheets formulas