【发布时间】:2020-02-08 11:19:30
【问题描述】:
我已经在这个平台上问了一些与我的这个个人项目有关的问题,这应该是最后一个,因为我已经接近完成了。下面是我创建的模拟示例电子表格的链接,它模仿了我的实际项目所做的,但它包含的敏感信息较少,而且尺寸也更小。
电子表格的基本概要:
将由另一方控制/编辑的主计划中的数据拉入主计划选项卡。
在与导入数据相邻的列中,数组公式按教室扩展主时间表,以防某些时间段指定多个房间。其他公式调整日期、开始时间和结束时间以限制在当天的 24 小时内。每节课的开始时间也提前了一个小时。
在房间安排选项卡中,根据第一列中的房间号创建一个小时日历,并且只对应于当天。
我已经在多个场景中对电子表格进行了广泛的测试,除了计算时间之外,我对所有的工作方式都很满意。我认为我使用的两个 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