【问题标题】:Excel - saving Workbook very slowExcel - 保存工作簿非常慢
【发布时间】: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 个索引匹配公式

标签: vba excel


【解决方案1】:

查看此链接,了解如何在单元格的值更改时运行宏:

https://support.microsoft.com/en-us/kb/213612

从那里您可以让宏打开新工作簿,将 INDEX MATCH 公式添加到原始工作簿中的单元格,复制并粘贴为值,然后关闭另一个工作簿。这样你的文件就是所有值而不是公式,这将显着提高速度。

要提高宏在运行时的性能,请将其添加到代码的开头:

Application.ScreenUpdating = False
Application.DisplayAlerts = False

然后在最后加上这个:

Application.ScreenUpdating = True
Application.DisplayAlerts = True

【讨论】:

  • 我会试一试,看看我能达到什么样的保存时间,数据存储工作簿比我遇到问题的工作簿大得多,只是没有任何外部链接,但打开和关闭它仍然需要一段时间(1 分钟打开,1 分钟保存和关闭),这仍然应该比我正在经历的保存时间更快,但会增加我的重新计算时间,因为每次我重新计算必须打开大型数据存储,目前重新计算时间大约为 10 秒。
  • 只是一点上下文,很多人在工作中以只读模式使用这些电子表格,他们不必保存工作簿,但他们确实需要它来快速重新计算。我是唯一一个需要在进行更改时保存工作簿的人,所以我不能用保存时间来换取重新计算时间。
  • 我想这取决于给你带来麻烦的工作簿中单元格值的变化频率。如果它非常罕见,我的回答应该是一个不错的选择。如果它很频繁,那么您可能需要一个可以手动启动的单独宏。此外,据我了解,数据存储工作簿上的数据透视表可能比大量 INDEX MATCH 公式更好的选择
  • 这很常见,尽管我有 excel 经验,但我从不经常使用数据透视表。在这种情况下我将如何有效地使用它?如上所述,工作簿有 756,612 个 INDEX MATCH 公式。
  • 如果没有看到您的数据集和期望的结果,我不知道,但这可能会有所帮助:excel-easy.com/data-analysis/pivot-tables.html 根据我的经验,我尽量避开INDEX MATCH 组合,因为它会减慢文件这么多,尽管它非常有用。我倾向于仅在 VLOOKUP 不起作用时使用它,因为我需要的值位于查找值的左侧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
相关资源
最近更新 更多