Excel电子表格工作簿减肥秘招
本技巧中会罗列一些常见的Excel 文件体积虚增的原因及处理办法。
1 工作表中存在大量的细小图形对象
工作表中如果存在大量的细小图形对象,那么文件体积就可能在用户毫不知情的情况下暴增,这是一种很常见的“Excel 肥胖症”。可以使用下面两种方法来检查Excel 工作表是否存在这种症状。
(1)在工作表中按
如果工作簿中包含多个工作表,需要在每个工作表中用这种方法进行查找。关于“定位”功能的更多技巧,请参阅技巧28。
注意:隐藏列或行中的对象利用这种方法无法被看到。
(2)用VBA 对工作簿中的对象进行计数,查看在每个工作表中实际存在的对象数量,如果此数量不合理,就说明有问题。按打开VBA 编辑器窗口,单击菜单“插入”→“模块”来插入一个新模块,默认情况下为“模块1”,然后在模块1 的代码窗口中输入以下代码:
Sub CountShapes()
Dim n As Double
Dim ws As Worksheet
Dim Content As String
For Each ws In Worksheets
n = ws.Shapes.Count
Content = Content & "工作表" & ws.Name & " 有" & n & " 个对象" & vbCrLf
Next
MsgBox Content
End Sub
最后,按F5 键来运行这段代码,就能看到检查结果。在看似空白的工作表中,存在着大量的图形对象,如图2 所示。
如果确认在工作表中存在大量的对象,而用户并不需要它们,可以用两种方法来处理:
(1)刚才的定位方法中,当对象全部处于被选择状态时按
(2)使用宏在多个工作表中更加精确地删除这些无用对象。比如,可以根据需要只删除高度和宽度都小于14.25 磅(0.5 cm)的对象。
只删除活动工作表中特定大小的对象的代码为:
Sub DelShapes()
Dim sp As Shape, n
For Each sp In ActiveSheet.Shapes
If sp.Width < 14.25 And sp.Height < 14.25 Then
sp.Delete
n = n 1
End If
Next sp
MsgBox "共删除了" & n & "个对象"
End Sub
删除所有工作表中的特定大小的对象的代码为:
Sub DelAllShapes()
Dim ws As Worksheet
Dim sp As Shape
Dim n As Double
Dim Content As String
For Each ws In Worksheets
For Each sp In ws.Shapes
If sp.Width < 14.25 And sp.Height < 14.25 Then
sp.Delete
n = n 1
End If
Next
Content = Content & "工作表" & ws.Name & " 删除了" & n & " 个对象" & vbCrLf
n = 0
Next
MsgBox Content
End Sub
这些令人疑惑的对象的产生原因可能有以下几个。从网页上复制内容后直接粘贴到工作表中,而没有使用选择性粘贴。无意中使用绘图工具栏的直线工具或其他绘图工具,不知不觉中在工作表中插入了小的直线或其他图形对象,由于尺寸很小,于肉眼几乎无法看到。而后,又通过单元格的复制产生了大量的小绘图对象。在工作表中插入了图片或其他绘图对象,操作中又将其高度宽度设为0 或很小的值,通过复制产生了大量的对象。
在行或列的位置中插入了绘图对象,对象的属性为“大小位置随单元而变的(默认的)”,然后隐藏行或列,或设置行高或列宽为很小的值,从而使插入的对象不能看到。工作表中的对象设置了不可见属性(Visible=false),或对象的线条与填充色均设与背景色相同,使对象无法被看到。
2 工作表中在较大的区域内设置了单元格格式或者条件格式
仔细观察工作表滚动条,如果滑标很小,且拖动滑标向下到底,可以到达很大的行号或列标,可是工作表中实际使用到的区域很小,如图3 所示。这就说明,有相当大一块区域可能被设置了单元格格式或者条件格式,这些并没有被用到的单元格,能对文件体积产生很大的影响。
解决办法如下。单击到真正需要的行号的下一行,按组合键,选择所有的多余行(也可以在名称框中输入行号如2000∶65536),单击菜单“编辑”→“清除→“格式”(或全部)。同理,也可以清除多余列的格式。
有时,用户确实需要为工作表中空白的区域预设格式,以备将来增加数据之用,但一定要使用正确的方法,否则就会造成大量用不到的区域被预设了格式,徒增文件体积。
如果需要在一行或一列的很大范围设置统一的单元格格式,可以选择整行或整列设置单元格格式,而不要只选择行列的一部分单独设置格式。前者不会造成文件体积虚增的问题,而后者会增加文件体积。试验一下在两个Excel 文件里面分别对A1∶A65536 设置单元格格式和对A∶A 设置单元格格式,目的都是为A 列设置格式,但最终文件的体积相差100 倍以上。
3 大量的区域中包含数据有效性
与上一个原因很类似,如果在数据区域中因为不正确的做法而导致大量单元格区域内包含数据有效性的设置,而这些区域根本用不上,那么也会造成文件体积增大。尤其是在数据有效性设置中进行了“输入法”“输入信息”“出错警告”的设置,更具有隐蔽性,一般不易发现。这个问题的解决办法和刚才的类似,先选择工作表中多余的单元格区域,单击菜单“数据”→“有效性”,在任意选项卡中单击“全部清除”按钮,最后单击“确定”按钮。
4 包含大量复杂的公式
如果工作表中包含大量的公式,而每个公式都因为要执行复杂的计算而导致内容很长,那么文件体积巨大就在所难免了。在这种情况下,只能设法优化公式。比如,在公式中使用名称代替单元格引用就是个好办法。有关名称的详细内容,请参阅第7 章。
这种方法给文件减肥,效果也很明显,笔者曾将一个近4 MB 的文件减到约900 KB,减小了近3/4。
解决办法如下。单击到真正需要的行号的下一行,按组合键,选择所有的多余行(也可以在名称框中输入行号如2000∶65536),单击菜单“编辑”→“清除→“格式”(或全部)。同理,也可以清除多余列的格式。
有时,用户确实需要为工作表中空白的区域预设格式,以备将来增加数据之用,但一定要使用正确的方法,否则就会造成大量用不到的区域被预设了格式,徒增文件体积。
如果需要在一行或一列的很大范围设置统一的单元格格式,可以选择整行或整列设置单元格格式,而不要只选择行列的一部分单独设置格式。前者不会造成文件体积虚增的问题,而后者会增加文件体积。试验一下在两个Excel 文件里面分别对A1∶A65536 设置单元格格式和对A∶A 设置单元格格式,目的都是为A 列设置格式,但最终文件的体积相差100 倍以上。
3 大量的区域中包含数据有效性
与上一个原因很类似,如果在数据区域中因为不正确的做法而导致大量单元格区域内包含数据有效性的设置,而这些区域根本用不上,那么也会造成文件体积增大。尤其是在数据有效性设置中进行了“输入法”“输入信息”“出错警告”的设置,更具有隐蔽性,一般不易发现。这个问题的解决办法和刚才的类似,先选择工作表中多余的单元格区域,单击菜单“数据”→“有效性”,在任意选项卡中单击“全部清除”按钮,最后单击“确定”按钮。
4 包含大量复杂的公式
如果工作表中包含大量的公式,而每个公式都因为要执行复杂的计算而导致内容很长,那么文件体积巨大就在所难免了。在这种情况下,只能设法优化公式。比如,在公式中使用名称代替单元格引用就是个好办法。有关名称的详细内容,请参阅第7 章。
这种方法给文件减肥,效果也很明显,笔者曾将一个近4 MB 的文件减到约900 KB,减小了近3/4。
5 Excel 的Bug
用户可以做这样一个试验。
这时,Excel 状态栏上会开始显示进度条,等到进度条消失,再保存文件,这个文件的大小将为1.42 MB。对于这个工作表,无论用什么方法来清除格式(无论是清除格式、清除全部、单元格全部删除、复制其他工作表的格式)都不能复原。
我们怀疑这是Excel 的一个鲜为人知的Bug。在Excel 2000 开始的所有Excel 版本中都存在这个Bug。唯一能解决问题的方法是:按选取全部单元格,单击菜单“格式”→“行”→“行高”,设置一个固定行高(如14.25),马上保存文件。此时文件体积才能恢复为正常大小。
6 使用了大图片作为工作表背景
如果使用了较大的图片作为工作表的背景,也会造成文件体积增大。比如在工作表使用了一个10 MB 的TIFF 格式图片作为背景,那么这个Excel 文件里面即使没有任何数据,其体积也会超过10 MB。
因此,除非特别需要,不要使用工作表背景功能。如果确实需要,那么用作背景的图片要尽可能的小。
7 工作表中插入的图片格式影响文件的大小
如果把BMP、TIFF 等高容量格式的图片插入到工作表中,或从绘图软件中直接复制图片粘帖到工作表中,也会造成文件体积大增。尽管Excel 可以对已插入的图片进行压缩,但最好还是先把要插入的图片进行转换、压缩,比如转换为JPG 等图片格式,再进行插入。
8 共享工作簿引起的体积虚增
许多被长时间使用的共享工作簿,文件体积也会常常虚增到正常情况下的几倍甚至几十倍。很少有专门的资料介绍共享工作簿的弊端,这也许是由于多人同时使用的过程中产生了许多过程数据存放于工作簿文件内而没有得到及时的清理造成的。对于因此而体积虚增的工作簿文件,可以尝试取消“共享工作簿”,然后保存文件。通常情况下,就能起到恢复文件正常体积的效果。如果需要继续与他人使用共享工作簿,可以再次开启“共享工作簿”。
9 其他未知原因
也许还有其他未知原因会造成Excel 文件患上“肥胖症”,在此情况下,可以尝试以下方法。再次保存后得到的文件,通常会比原来的文件要小很多。
相关文章
Excel如何限制输入位数? excel单元格只能录入5位数字或文本的教程
excel单元格设置只能录入5位数字或文本,这个很简单的,跟着我的步骤,你一步步地仔细看,一定能够明白,时间宝贵,抓紧时间赶快看2024-09-28excel如何快速将数值批量扩大10倍? EXcel表格中数字扩大10倍的技巧
想要将电子表格中一列数据扩大10倍,该怎么批量实现呢?下面我们就来看看excel快速将数据扩大10倍的教程2024-09-28- 在本文中,我们将介绍10个对你的日常数据最有用的数据,以及如何使用它们,详细请看下文介绍2024-09-20
excel表格前几列不见了怎么办? excel前几列隐藏不显示的的解决教程
在使用Excel表格时,有时会遇到前几列不见的情况,这给我们的工作造成了一定的困扰,那么,我们该如何解决这个问题呢?详细请看下文介绍2024-09-15excel编号列隐藏了怎么办? excel最前面的编号列没了的解决教程
在使用Excel表格时,有时会遇到前几列不见的情况,这给我们的工作造成了一定的困扰,比如Excel表格中,序号通常是在第一列显示的,下面我们就来看看重新显示编号的教程2024-09-15excel怎么把重复项合并? excel将相同名字的数据合并在一起的教程
当我们在处理大批量数据时,需要将同类项(即重复项、想通的名字)合并在一起,提升数据的可读性,这样才易于理解,详细请看下文介绍2024-09-15多个重复值如何快速只统计一次? excel重复的数据设置只统计一次教程
excel表格中重复的数据很多,统计数据的时候,想要将重复数据只统计一次,该怎么操作呢?下面我们就来看看详细的教程2024-09-15excel表格数据怎么将大于100的标红小于80显示绿色? 条件格式详细用法
excel表格中有很多数据,想要让大于100的数据标红色,小于80的数据显示绿色,该怎么操作呢?下面我们就来看看详细的教程2024-09-13excel会计专用格式怎么设置? excel将单元格调整为会计专用的教程
在日常工作中,我们经常需要处理一些财务数据,Excel作为一款强大的电子表格工具,无疑是许多会计人员的得力助手,然而,要将Excel单元格调整为会计专用格式,你可能需要一2024-09-13Excel如何制作可选择日期的下拉菜单? excel设置下拉选择日期的教程
在日常办公学习使用Excel表格时,我们有时需要在表格中输入大量日期,如果一个个输入会比较繁琐,那么能否制作一个可以选择日期的下拉菜单,快速选择需要的日期呢?接下来2024-09-13
最新评论