【问题标题】:Optimizing / speeding up calculation time in Google Sheets优化/加快 Google 表格中的计算时间
【发布时间】:2020-02-08 11:19:30
【问题描述】:

我已经在这个平台上问了一些与我的这个个人项目有关的问题,这应该是最后一个,因为我已经接近完成了。下面是我创建的模拟示例电子表格的链接,它模仿了我的实际项目所做的,但它包含的敏感信息较少,而且尺寸也更小。

Mock Spreadsheet

电子表格的基本概要:

  1. 将由另一方控制/编辑的主计划中的数据拉入主计划选项卡。

  2. 在与导入数据相邻的列中,数组公式按教室扩展主时间表,以防某些时间段指定多个房间。其他公式调整日期、开始时间和结束时间以限制在当天的 24 小时内。每节课的开始时间也提前了一个小时。

  3. 房间安排选项卡中,根据第一列中的房间号创建一个小时日历,并且只对应于当天。

我已经在多个场景中对电子表格进行了广泛的测试,除了计算时间之外,我对所有的工作方式都很满意。我认为我使用的两个 volatile 函数本身会花费一些处理时间,而且我当然没想到这会像闪电一样快,尤其是在不使用脚本的情况下,但我实际实现此方法的项目要大得多并且需要很长时间才能更新。这个电子表格的目的是让用户找到一个开放的房间并通过点击它旁边的复选框来“预订”它(这会将整行涂成红色),让其他人知道它现在已经被占用了。

我想知道是否有任何方法可以优化/加速我的电子表格,或者每次单击复选框时不更新它,而是“手动”更新它,类似于 OP 所要求的 here .我不熟悉 Apps 脚本,也不精通整体代码编写,但我愿意学习 - 我只需要朝着正确的方向前进,因为我要进入这个盲区。我知道 Room Schedule 选项卡中的公式数量可能对我不利,但我非常接近我想要的最终产品,所以任何帮助或见解非常感谢!

如果我解释得不够清楚,请随时提出任何问题。

【问题讨论】:

  • 我们如何访问您正在运行的脚本的代码?它是否完全在电子表格的单元格中起作用?需要寻找哪些重要的部分?
  • 没有脚本,只有函数,但如果我知道如何编写脚本我会想要,因为我认为它更适合我正在做的事情。最重要的部分是“房间计划”选项卡中的公式。除了不同的单元格引用之外,它们都是相同的。我相信 Master Schedule 选项卡中的 Plus 单元格 A3 使用 NOW() 函数,我确定每次在 Room Schedule 选项卡中单击复选框时都会重新计算该函数。
  • 看看这篇精彩的文章:benlcollins.com/spreadsheets/slow-google-sheets 它会告诉你尽量避免使用 volatile 函数,例如 now(),并提供很多提示。
  • 查看您的电子表格,我猜是条件格式严重拖慢了它的速度。
  • 令人惊讶的是,条件格式几乎没有产生影响。我刚刚测试了几个场景:我的完整实际电子表格在打开或刷新时需要 4:45 来填充,而在日历视图中选中的每个复选框需要 1:12 来更新。删除所有条件格式可将其加快 10 秒,并且复选框时间保持不变。从每小时日历视图中删除所有公式后,电子表格只需 18 秒即可在打开时填充,这让我知道易变的 NOW() 函数没什么大不了的。

标签: if-statement google-sheets spreadsheet google-sheets-formula array-formulas


【解决方案1】:

为了加快速度,您应该避免每行使用相同的公式并使用数组公式。例如:

=IF(AND(TEXT(K3,"m/d")<>$A$1,(M3-L3)<0),K3+1,K3+0)

=ARRAYFORMULA(IF(K3:K<>"", 
 IF((TEXT(K3:K, "m/d")<>$A$1)*((M3:M-L3:L)<0), K3:K+1, K3:K+0), ))

=IF(AND(TEXT(K3,"m/d")=$A$1,(M3-L3)&lt;0),TIMEVALUE("11:59:59 PM"),M3+0)

=ARRAYFORMULA(IF(K3:K<>"", 
 IF((TEXT(K3,"m/d")=$A$1)*((M3-L3)<0), TIMEVALUE("11:59:59 PM"), M3:M+0), ))

【讨论】:

  • 谢谢你,player0。我将立即实施,尽管这似乎不是放缓的根源。正如我在上面的评论中所说,这些公式需要不到 20 秒的时间来重新计算,我对此非常满意。 Room Schedule 选项卡中的所有单元格都需要很长时间,无论是否应用了条件格式。
  • 实际上,您提供的公式只是在数组的每个单元格中重复了第一个计算值。
  • 啊,我看到了我的错误。我想它已经到了我的尽头。如果可能的话,您是否认为在日历选项卡中使用数组公式有助于加快速度?这就是我的主要问题所在。
  • 我敢说,你最讨厌的公式在 Master Schedule!A3 中,它对工作表性能有重大影响
  • 这也是我的想法,直到我隔离了电子表格的每个部分。导入数据只需要大约 10-15 秒,即使我粘贴值而不是使用公式导入它们,日历选项卡仍然需要很长时间才能填充。我意识到会有一些延迟,因为日历选项卡中的每个单元格都包含它自己的公式,所以我很好奇是否有人知道如何优化它或避免重新计算,直到使用工作表的人选择手动执行。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多