Excel 在尝试计算一个或多个公式时资源不足

Excel 在尝试计算一个或多个公式时资源不足

我收到错误消息“Excel 在尝试计算一个或多个公式时资源不足”我的电脑 (共 2 台)。

我的工作表包含:(在单个工作表中,而不是工作簿中,另一个工作表中有公式)

  • 1,000,000 个公式

  • 基于 900,000 行数据的数据透视表

当我在操作“计算工作表”(仅限当前工作表)上运行 excel/vba 时,程序会弹出以下错误消息:

Excel ran out of resources while attempting to calculate one or more formulas

我既没有在(Excel 或 VBA)中“刷新”数据透视表,也没有在(Excel 或 VBA)中“计算表”

我有两台电脑:

  • 都运行 64 位 Windows 7,

  • 都运行 Excel 2007 32 位,

  • 我在启动 Windows 后立即运行 Excel,

  • 我的开发电脑有 2GB RAM,可以毫无问题地运行,

  • 另一台具有 6GB RAM 的电脑显示ran out of resources错误消息

  • 在同一组数据、同一个 excel 文件上运行

我还注意到,在我的开发电脑上,它使用约 1.2G RAM,而非工作的电脑上,在单击“刷新”/“计算”操作之前,它使用 900M RAM。

编辑

非工作计算机可以处理10万行以内的数据

我的问题:

  1. 为什么它在内存较少的计算机上可以工作,但在内存较大的计算机上却不行?(主要问题)
  2. 我该怎么做才能减少 Excel 使用的内存?(子问题)(除了删除数据)

任何帮助都值得感激,请给我指出正确的方向或只是提供一些线索。

编辑:我正在考虑删除公式,将逻辑移到 vba,并通过缓存每 10,000 行的数据来实现。但如果“刷新”数据透视表会显示相同的错误,那么这并不能解决我的问题。

答案1

原因可能是两台电脑上的 32 位内存碎片不同(通常很难使用所有理论上可用的 2 GB)。
您可以通过减少列数和/或减少某些列所需的内存(文本字符串是一个很好的候选者)来减少数据透视表使用的内存量。
(您可以使用 VBA PivotCache.memoryUsed 测量数据透视缓存使用的内存量)
我假设您是通过将查询中的数据直接读入数据透视缓存来创建数据透视缓存,而不是将查询数据放到工作表上并根据工作表进行数据透视,这会使用更多的内存。
您没有说 >1000000 公式是什么,所以我没有任何改进建议。
如果您想在 Excel 数据透视等中使用大量数据,您可以从没有 2 GB 限制的 64 位版本的 Excel 2010 中获得更好的结果

答案2

感谢大家的建议、阅读和帮助。我已经通过以下方式解决了这个问题

  1. 每~100,000行逐步将所有公式更改为值---这将使excel占用的内存减少10%
  2. 删除了工作簿中所有不必要的数据/工作表(数据修改前的原始数据)--这将使 Excel 占用的内存减少 40%

阅读http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htm解释一下为什么 6G RAM PC 会遇到这个问题而不是 2G RAM PC。我认为这是因为 6G PC 上有很多 Excel 插件,也消耗了 RAM。

谢谢您的帮助。

答案3

旧问题,但对于所有版本仍然有效,当我使用的公式范围太大时,我遇到了类似的问题,即使大多数字段都是空的,例如:DO_CALCULATION(D1:D100000) 也会占用大量时间和内存,即使只有单元格 D1:D10 有值。因此,在尝试使公式准备好进行数据扩展时要小心,保持范围较小 :)

答案4

答案是升级到 64 位版本的 Excel。它可以处理更大的内存范围,而且通常速度更快,如果您有大型电子表格,它是完成这项工作的合适工具。

相关内容