【发布时间】:2016-03-05 14:52:09
【问题描述】:
我有许多工作簿在保存时特别慢(10 - 30 分钟)。我知道它们速度慢的原因是它们有很多 INDEX、MATCH 公式,它们链接到另一个封闭的工作簿。
当日期更改时,工作簿打开需要 19 秒,重新计算大约需要 10 秒(在改进之前,重新计算时间约为 50 秒)。我似乎无法加快工作簿的保存时间。
我试图找到一种方法,用 VBA 代码替换 INDEX、MATCH 公式,该代码在检测到更改时导入数据,但显然无法从已关闭的工作簿中导入数据,因此不会为我工作。
我确实将公式设置为 =INDEX( , MATCH( , , )) 但是我已将其更改为有一个 MATCH 列,然后是许多 INDEX 公式,这将重新计算时间减少到五分之一原来是这样,开放时间减半,但如果有的话,保存时间会更长。
有人有什么建议吗?
【问题讨论】:
-
如果作为链接源的工作簿在打开/保存时也打开了,那应该会有很大的不同。或者你说这是不切实际的?就我个人而言,我始终确保在使用此类外部链接处理文件时同时打开任何链接的工作簿。
-
不幸的是,打开数据存储工作簿似乎并没有什么不同,我认为数据存储在打开时使用的资源量抵消了打开它所获得的任何好处。
-
你说的是 INDEX/MATCH 公式?不是数组版本,我相信?我们在谈论多少这样的公式?您的工作簿中有任何可变函数(例如偏移、间接、今天、现在)?
-
不,没有 INDIRECT 或 OFFSET 函数,只需直接向上 INDEX 和 MATCH 进行基于日期的查找。我有大量 INDEX 和 MATCH 公式的真正原因是因为我需要对 INDEX 和 MATCH 提取的数据进行 SUMIFS 处理,这听起来有点疯狂,我知道,但 INDEX 和 MATCH 在数据存储关闭时有效,并且SUMIFS 没有,数据存储必须打开才能使 SUMIFS 单独工作,所以我使用 INDEX 和 MATCH 然后使用 SUMIFS 提取数据。也许是那个过程是错误的,有更好的方法吗?
-
756,612 个索引匹配公式