如何清理 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 2013 开始,与之前的版本相比,做出的改进需要更多的系统资源。 本文确定 Excel 工作簿中使用大量内存的方面,并描述了如何使工作簿文件更有效地工作。
有关我们在 Excel 2013 中所做的更改,请参阅 32 位版本的 Excel 2013 的内存使用情况。
解决方案
若要解决此问题,请依所列次序使用下列方法。 如果其中一种方法没有效果,则继续使用下一种方法。
注意
许多 Excel 工作簿都存在一些问题。 解决这些问题后,工作簿将更加顺畅地运行。
格式注意事项
格式可能会导致 Excel 工作簿变得过大,无法正常工作。 通常,Excel 挂起或崩溃是因为格式问题。
方法 1:消除过多的格式
Excel 工作簿中过多的格式会导致文件变大并导致性能低下。 如果对整列或整行应用颜色或边框格式,则认为格式过多。 当格式设置需要从网页或数据库复制或导入数据时,也会出现此问题。 若要清除过多的格式,请使用清除工作表上的过量单元格格式中提供的格式清理加载项。
如果在消除多余格式后仍遇到问题,请继续执行方法 2。
方法 2:删除未使用的样式
你可以使用样式来标准化在整个工作簿中使用的格式。 将单元格从一个工作簿复制到另一个工作簿时,也会复制其样式。 这些样式将继续使文件增大,并且最终可能会导致保存回较旧版本的文件时 Excel 中出现错误消息“不同的单元格格式过多”。
许多实用程序都可用于删除未使用的样式。 只要使用基于 XML 的 Excel 工作簿 (即 .xlsx 文件或 xlsm 文件) ,就可以使用样式清理工具。 你可以在此处找到此工具。
如果在删除任何未使用的样式后仍遇到问题,请继续执行方法 3。
方法 3:删除形状
在电子表格中添加大量形状还需要大量内存。 形状定义为 Excel 网格上的任何对象。 其中一些如下所示:
- 图表
- 绘图形状
- Comments
- 剪贴画
- SmartArt
- 图片
- 艺术字
通常,这些对象是从网页或其他工作表复制而来,并处于隐藏状态或彼此堆叠。 用户通常不知道它们的存在。
要检查形状,请遵循以下步骤:
- 在主功能区上,单击“查找并选择”,然后单击“选择窗格”。
- 单击“此工作表上的形状”。 形状显示在列表中。
- 删除所有不需要的形状。 (眼睛图标指示形状是否可见。)
- 对每个工作表重复步骤 1 到 3。
如果在删除形状后仍遇到问题,应检查与格式不相关的注意事项。
方法 4:删除条件格式
条件格式可能会导致文件增大。 当文件的条件格式已损坏时,将发生这种情况。 你可以删除条件格式作为测试,以查看问题是否与格式损坏有关。 要删除条件格式,请遵循以下步骤:
- 保存此文件的备份。
- 在主功能区上,单击“条件格式”。
- 清除整个工作表中的规则。
- 对工作簿中每个工作表执行步骤 2 和步骤 3。
- 使用不同的名称保存工作簿。
- 检查问题是否已解决。
如果删除条件格式解决了问题,你可以打开原始工作簿,删除条件格式,然后重新应用它。
问题仍然存在?
如果这些方法都不起作用,可以考虑迁移到 64 位版本的 Excel、将问题工作簿分解为不同的工作簿,或联系支持人员进行其他疑难解答。
计算注意事项
除了格式之外,计算也会导致 Excel 崩溃和挂起。
方法 1:使用最新版本的 Excel 打开工作簿
如果工作簿包含大量计算,在新版本的 Excel 中首次打开工作簿可能需要很长时间。 为了首次打开工作簿,Excel 必须重新计算工作簿并验证工作簿中的值。 有关详细信息,请参阅以下文章:
如果在 Excel 重新计算完文件后,文件仍然打开缓慢,可以继续使用方法 2。
方法 2:公式
查看工作簿并检查你使用的公式类型。 某些公式会占用大量内存。 其中包括以下数组公式:
- LOOKUP
- INDIRECT
- OFFSETS
- INDEX
- MATCH
你可以使用它们。 但是,请注意要引用的范围。
引用整个列的公式可能会导致 .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 的信息,请参阅I安装 Office 更新。
对于早期版本的 Office,您可能需要重建公式来引用公式所需的单元格。
注意
检查您定义的名称,确保没有其他公式引用整列或整行。
注意
如果使用整行,也会发生此情况。
如果在将公式更改为仅引用使用的单元格后仍遇到问题,请继续执行方法 3。
方法 3:跨工作簿计算
限制跨工作簿执行计算的公式。 这一点非常重要,原因有两个:
- 您正试图通过网络打开该文件。
- Excel 尝试计算大量数据。
在一个工作簿中包含公式,然后创建从一个工作簿到另一个工作簿的简单链接,而不是跨网络执行计算。
如果在将公式更改为仅引用单元格而不是跨工作簿计算后继续遇到问题,请继续执行方法 4。
方法 4:可变函数
限制工作簿中的可变函数的使用。 不需要有数百个使用 TODAY 或 NOW 函数的单元格。 如果电子表格中必须有当前的日期和时间,请使用该函数一次,然后通过链接的定义名称引用该函数。
如果在限制可变公式后仍遇到问题,请继续执行方法 5。
方法 5:数组公式
数组公式功能强大。 但必须正确地使用它们。 一定不要向数组添加多于必须包含的单元格。 当数组中的单元格具有需要计算的公式时,将针对该公式中引用的所有单元格进行计算。
有关数组如何工作的信息,请参阅 Excel 2010 性能:优化性能障碍的提示。
如果在更新数组公式后仍遇到问题,请继续执行方法 6。
方法 6:定义的名称
定义的名称用于引用整个工作簿中的单元格和公式,以向公式添加"友好名称"。 应检查链接到其他工作簿或临时 Internet 文件的任何已定义名称。 通常,这些链接是不必要的,会减慢 Excel 工作簿的打开速度。
可以使用名称管理器工具查看在 Excel 界面中看不到的隐藏定的义名称。 此工具使您能够查看和删除不需要的已定义名称。
如果删除任何不必要的已定义名称后,Excel 继续崩溃和挂机,请转到方法 7。
方法 7:链接和超链接
Excel 的强大之处在于它能够从其他电子表格中引入实时数据。 清点文件及其链接到的外部文件。 Excel 对可以链接多少 Excel 工作簿没有限制,尽管您可能会遇到一些问题。 在不带链接的情况下测试文件,以确定问题是位于此文件中还是其中一个链接文件中。
继续
这些都是导致 Excel 挂机和崩溃的最常见问题。 如果您仍在 Excel 中遇到崩溃和挂机,则应考虑向 Microsoft 提交支持票证。
更多信息
如果这些方法都不起作用,则您应该考虑转到 64 位版本的 Excel 或将问题工作簿分成不同的工作簿。