【问题标题】:Variable parameter vs hardcoding可变参数与硬编码
【发布时间】:2018-03-01 23:37:08
【问题描述】:

我有一个包含约 200 个标签的大型复杂电子表格。由于大量的公式计算,它打开/加载非常缓慢(最多 5 分钟)。我正在尝试优化公式,以便电子表格更快地打开/加载。

最常见的计算之一是将每个选项卡中的大约 60 个单元格乘以“Sheet1!B4”中的一个变量(工作表 1,单元格 B4)。我预计该值可能会在一年左右更改一次,这将需要更新所有 200 个选项卡,每个选项卡至少包含 60 个单元格。

对值进行硬编码并在所有选项卡中的所有受影响单元格中每年更新一次会更好吗?

或者是否可以以某种方式引用它,这不会影响性能,最好让它更快?

以下是我正在考虑的三个选项:

  1. 硬编码值:=countif(C$10:C$30,$B60) * 10

  2. 参考单元格:=countif(C$10:C$30,$B60) * Sheet1!:B4

  3. 使用单个单元格的命名范围:=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


【解决方案1】:

我认为这三个选项中的任何一个都不会对电子表格性能产生显着影响,因为引用/命名范围指向具有固定值的单元格。

相关问答

【讨论】:

  • 感谢您的链接...我关注了它并发现了一些有趣的线程。但是,性能不能简单地通过生产环境中的 t2-t1 来衡量,尤其是在云环境中。很难预测任何给定时刻服务器和网络上的负载,以及未知的设计变量,如谷歌的缓存刷新率等。我最好的选择是实际了解内部缓存是如何实现的函数调用,或在隔离的网络环境中进行测试。
猜你喜欢
  • 2019-08-12
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2017-07-29
  • 1970-01-01
  • 2016-06-15
  • 2015-10-03
相关资源
最近更新 更多