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