如何清理 Excel 工作簿,使其使用更少的内存

症状

升级到 Office 2013/2016/Microsoft 365 后,会出现以下一个或多个症状:

  • 打开多个Microsoft Excel 2013 工作簿、保存 Excel 工作簿或在 Excel 工作簿中进行计算时,计算机使用更多内存。

  • 在升级到 Excel 2013/2016 之前,不能再在同一实例中打开任意数量的 Excel 工作簿。

  • 在 Excel 工作簿中插入列时,会收到有关可用内存的错误。

  • 使用 Excel 电子表格时,会收到以下错误消息:

    There isn't enough memory to complete this action.
    Try using less data or closing other applications.
    To increase memory availability, consider:
       - Using a 64-bit version of Microsoft Excel.
       - Adding memory to your device.
    

有关在使用 Excel 工作簿时发生的、因内存不足而无法完成此操作的错误详细信息。

原因

从 Excel 2013 开始,所做的改进需要比早期版本更多的系统资源。 本文介绍了使用大量内存的 Excel 工作簿中的区域,并介绍了如何提高工作簿文件的效率。

有关我们在 Excel 2013 中所做的更改的详细信息,请参阅 32 位版本的 Excel 2013 中的内存使用情况

决议

若要解决此问题,请使用以下方法,按显示它们的顺序。 如果其中一种方法没有帮助,请转到下一个方法。

注释

许多 Excel 工作簿存在几个可能出现问题的问题。 消除这些问题后,工作簿将更顺利地运行。

格式设置注意事项

格式设置可能导致 Excel 工作簿变得如此之大,无法正常工作。 由于格式设置问题,Excel 经常挂起或崩溃。

方法 1:消除过度格式设置

Excel 工作簿中的过度格式可能会导致文件增长,并可能导致性能不佳。 如果设置具有颜色或边框的整列或行的格式,则格式将被视为过多。 当格式要求从网页或数据库复制或导入数据时,也会出现此问题。 若要消除多余的格式,请使用工作表上的“清理多余单元格格式”中的格式清理加载项

如果在消除多余的格式设置后继续遇到问题,请转到方法 2。

方法 2:删除未使用的样式

可以使用样式来标准化在整个工作簿中使用的格式。 将单元格从一个工作簿复制到另一个工作簿时,也会复制其样式。 这些样式继续使文件增长,最终可能会在 Excel 中保存回旧文件版本时导致“单元格格式过多”错误消息。

许多实用工具都可用于删除未使用的样式。 只要使用的是基于 XML 的 Excel 工作簿(即 .xlsx 文件或 xlsm 文件),就可以使用样式更简洁的工具。 可 在此处找到此工具。

如果在删除任何未使用的样式后继续遇到问题,请转到方法 3。

方法 3:删除形状

在电子表格中添加大量形状也需要大量内存。 形状定义为位于 Excel 网格上的任意对象。 下面是一些示例:

  • 图表
  • 绘制形状
  • 注释
  • 剪贴画
  • SmartArt
  • 图片
  • 艺术字

这些对象通常从网页或其他工作表复制,并可能被隐藏或堆叠在一起。 用户经常不知道他们存在。

若要检查形状,请执行以下步骤:

  1. 在“主页”功能区上,单击“ 查找”和“选择”,然后单击“ 选择窗格”。
  2. 单击 这张工作表上的形状。 形状显示在列表中。
  3. 删除任何不需要的形状。 (眼睛图标显示形状是否可见。)
  4. 对每个工作表重复步骤 1 到 3。

如果在删除形状后继续遇到问题,则应检查与格式设置无关的注意事项。

方法 4:删除条件格式

条件格式可能导致文件增长。 当文件中的条件格式已损坏时,将发生这种情况。 可以删除条件格式,作为测试,以确定问题是否与格式设置中的损坏有关。 若要删除条件格式,请执行以下步骤:

  1. 保存文件的备份。
  2. 在“主页”功能区上,单击“ 条件格式”。
  3. 清除整个工作表中的规则。
  4. 对工作簿中的每个工作表执行步骤 2 和 3。
  5. 使用其他名称保存工作簿。
  6. 查看问题是否已解决。

如果删除条件格式可以解决问题,可以打开原始工作簿,删除条件格式,然后重新应用它。

问题仍然存在?

如果这些方法都不起作用,可以考虑迁移到 64 位版本的 Excel,将问题工作簿分解为不同的工作簿,或者联系支持人员进行其他故障排除。

计算注意事项

除了格式设置外,计算还可能是 Excel 崩溃和卡顿的原因。

方法 1:在最新版本的 Excel 中打开工作簿

如果工作簿包含大量计算,则首次在新版本的 Excel 中打开 Excel 工作簿可能需要很长时间。 若要首次打开工作簿,Excel 必须重新计算工作簿并验证工作簿中的值。 有关详细信息,请参阅 工作簿首次在 Excel 中打开时加载缓慢

如果 Excel 完全重新计算并保存文件后,打开文件时仍然缓慢,请转到方法 2。

方法 2:公式

浏览工作簿并检查所使用的公式类型。 某些公式占用大量内存。 其中包括以下数组公式:

  • 查找
  • 间接
  • 补偿
  • 索引
  • 比赛

可以使用它们。 但是,请注意所引用的范围。

引用整个列的公式可能会导致 .xlsx 文件中的性能不佳。 网格大小从 65,536 行增加到 1,048,576 行,从 256 列(IV) 列增加到 16,384 列(XFD)。 虽然不是最佳做法,但创建公式的一种常用方法是引用整个列。 如果仅引用旧版本中的一列,则仅包含 65,536 个单元格。 在新版本中,您引用了超过 100 万列。

假设具有以下 VLOOKUP:

=VLOOKUP(A1,$D:$M,2,FALSE) 

在 Excel 2003 和早期版本中,此 VLOOKUP 引用了仅包含 655,560 个单元格(10 列 x 65,536 行)的整行。 但是,随着新的较大网格,同一公式引用了近 1050 万个单元格(10 列 x 1,048,576 行 = 10,485,760 行)。

Office 2016/365 版本 1708 16.0.8431.2079 及更高版本中已修复此问题。 有关如何更新 Office 的信息,请参阅 安装 Office 更新

对于早期版本的 Office,您可能需要重新构造公式,以仅引用这些公式所需的单元格。

注释

检查已定义的名称,确保没有引用整列或行的其他公式。

注释

使用整行时,也会发生这种情况。

如果您在将公式更改为仅引用已使用的单元格后仍然遇到问题,请进行方法 3。

方法 3:跨工作簿计算

限制跨工作簿执行计算的公式。 这一点很重要,原因有两个:

  • 你正在尝试通过网络打开该文件。
  • Excel 正在尝试计算大量数据。

而不是跨网络执行计算,而是在一个工作簿中包含公式,然后从一个工作簿创建一个简单的链接到另一个工作簿。

如果在更改公式以仅引用单元格而不是跨工作簿计算后继续遇到此问题,请转到方法 4。

方法 4:可变函数

限制工作簿中可变函数的使用。 您不必有数百个使用 TODAY 或 NOW 函数的单元格。 如果必须在电子表格中具有当前日期和时间,请使用该函数一次,然后通过链接的已定义名称引用该函数。

如果在限制可变公式后继续遇到此问题,请转到方法 5。

方法 5:数组公式

数组公式功能强大。 但它们必须正确使用。 重要的是不要向数组添加比必要更多的单元格。 当数组中的单元格具有需要计算的公式时,将针对该公式中引用的所有单元格进行计算。

有关数组工作原理的详细信息,请参阅 Excel 2010 性能:优化性能障碍的提示

如果在更新数组公式后继续遇到此问题,请转到方法 6。

方法 6:已定义的名称

定义的名称用于在整个工作簿中引用单元格和公式,以向公式添加“友好名称”。 应检查链接到其他工作簿或临时 Internet 文件的任何已定义名称。 通常,这些链接是不必要的,并且会降低 Excel 工作簿的打开速度。

可以使用 “名称管理器”工具 查看 Excel 界面中看不到的隐藏定义名称。 使用此工具可以查看和删除不需要的已定义名称。

如果 Excel 在删除任何不必要的定义名称后继续崩溃并挂起,请转到方法 7。

Excel 的强大功能在于能够引入来自其他电子表格的实时数据。 清点文件及其链接到的外部文件。 Excel 对可链接的 Excel 工作簿数没有限制,尽管可能会遇到几个问题。 在不带链接的情况下测试文件,以确定问题是否在此文件或其中一个链接文件中。

继续前进

导致 Excel 挂起和崩溃的最常见问题有这些。 如果您仍然在 Excel 中遇到崩溃和卡顿问题,您应该考虑向 Microsoft 提交支持请求。

详细信息

如果这些方法都没有不同,则应考虑移动到 64 位版本的 Excel 或将问题工作簿分解为不同的工作簿。

如何在 Excel 中排查“可用资源”错误

Excel:如何排查 Excel 工作簿中的崩溃和“未响应”问题