我正在使用一个 Excel 插件,当您使用实时数据库中的数据刷新时,它会删除并重新创建数据表,这样对数据表的引用就不会被破坏。我正在使用公式 COUNT('DataSheet'!A:A) 来计算有多少行数据减去列标题行。如果数据没有刷新,将几乎立即重新计算,但是当使用添加刷新数据时,计数会缓慢增加,直到公式完成计算。我需要使用其他类似的公式,这些公式会大大减慢工作簿的速度。
我可以想到一些解决方法,但我需要知道是什么导致了 COUNT 正常重新计算和数据刷新时重新计算的行为差异。目前,刷新前后数据的行数相同,并且格式化范围不长于数据。
编辑:我想知道这是否与 Excel 处理内存中活动/填充的单元格的方式有关?
答案1
欢迎@TheGreatO96。
尝试使用 COUNTA() 而不是 COUNT(),但我几乎怀疑这不会有太大帮助。我怀疑您的插件中有一些需要优化的地方。数据库刷新是一种不稳定的操作,它将触发通常不会在没有刷新的情况下触发的重新计算。如果您使用任何不稳定函数,例如 OFFSET、INDIRECT、NOW 甚至条件格式,大型工作簿中的操作就会停滞。您可以在单个单元格中看到 COUNT(...) 值更新,这可能表明您的宏存在严重延迟。您可以尝试调整代码中的几项内容:
通过禁用重新计算来启动宏。运行其余代码。重新打开重新计算。
通过禁用屏幕更新来启动宏。运行其余代码。打开屏幕更新。
通过禁用事件来启动宏。运行其余代码。重新打开事件。
附言:我曾经通过放弃 OFFSET 函数而采用相对命名范围,将宏执行速度提高了近 2 个数量级。