Excel電子表格工作簿減肥秘招

本技巧中會(huì)羅列一些常見的Excel 文件體積虛增的原因及處理辦法。
1 工作表中存在大量的細(xì)小圖形對(duì)象
工作表中如果存在大量的細(xì)小圖形對(duì)象,那么文件體積就可能在用戶毫不知情的情況下暴增,這是一種很常見的“Excel 肥胖癥”??梢允褂孟旅鎯煞N方法來檢查Excel 工作表是否存在這種癥狀。
(1)在工作表中按
如果工作簿中包含多個(gè)工作表,需要在每個(gè)工作表中用這種方法進(jìn)行查找。關(guān)于“定位”功能的更多技巧,請(qǐng)參閱技巧28。
注意:隱藏列或行中的對(duì)象利用這種方法無法被看到。
(2)用VBA 對(duì)工作簿中的對(duì)象進(jìn)行計(jì)數(shù),查看在每個(gè)工作表中實(shí)際存在的對(duì)象數(shù)量,如果此數(shù)量不合理,就說明有問題。按打開VBA 編輯器窗口,單擊菜單“插入”→“模塊”來插入一個(gè)新模塊,默認(rèn)情況下為“模塊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 & " 個(gè)對(duì)象" & vbCrLf
Next
MsgBox Content
End Sub
最后,按F5 鍵來運(yùn)行這段代碼,就能看到檢查結(jié)果。在看似空白的工作表中,存在著大量的圖形對(duì)象,如圖2 所示。
如果確認(rèn)在工作表中存在大量的對(duì)象,而用戶并不需要它們,可以用兩種方法來處理:
(1)剛才的定位方法中,當(dāng)對(duì)象全部處于被選擇狀態(tài)時(shí)按
(2)使用宏在多個(gè)工作表中更加精確地刪除這些無用對(duì)象。比如,可以根據(jù)需要只刪除高度和寬度都小于14.25 磅(0.5 cm)的對(duì)象。
只刪除活動(dòng)工作表中特定大小的對(duì)象的代碼為:
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 & "個(gè)對(duì)象"
End Sub
刪除所有工作表中的特定大小的對(duì)象的代碼為:
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 & " 個(gè)對(duì)象" & vbCrLf
n = 0
Next
MsgBox Content
End Sub
這些令人疑惑的對(duì)象的產(chǎn)生原因可能有以下幾個(gè)。從網(wǎng)頁上復(fù)制內(nèi)容后直接粘貼到工作表中,而沒有使用選擇性粘貼。無意中使用繪圖工具欄的直線工具或其他繪圖工具,不知不覺中在工作表中插入了小的直線或其他圖形對(duì)象,由于尺寸很小,于肉眼幾乎無法看到。而后,又通過單元格的復(fù)制產(chǎn)生了大量的小繪圖對(duì)象。在工作表中插入了圖片或其他繪圖對(duì)象,操作中又將其高度寬度設(shè)為0 或很小的值,通過復(fù)制產(chǎn)生了大量的對(duì)象。
在行或列的位置中插入了繪圖對(duì)象,對(duì)象的屬性為“大小位置隨單元而變的(默認(rèn)的)”,然后隱藏行或列,或設(shè)置行高或列寬為很小的值,從而使插入的對(duì)象不能看到。工作表中的對(duì)象設(shè)置了不可見屬性(Visible=false),或?qū)ο蟮木€條與填充色均設(shè)與背景色相同,使對(duì)象無法被看到。
2 工作表中在較大的區(qū)域內(nèi)設(shè)置了單元格格式或者條件格式
仔細(xì)觀察工作表滾動(dòng)條,如果滑標(biāo)很小,且拖動(dòng)滑標(biāo)向下到底,可以到達(dá)很大的行號(hào)或列標(biāo),可是工作表中實(shí)際使用到的區(qū)域很小,如圖3 所示。這就說明,有相當(dāng)大一塊區(qū)域可能被設(shè)置了單元格格式或者條件格式,這些并沒有被用到的單元格,能對(duì)文件體積產(chǎn)生很大的影響。
解決辦法如下。單擊到真正需要的行號(hào)的下一行,按組合鍵,選擇所有的多余行(也可以在名稱框中輸入行號(hào)如2000∶65536),單擊菜單“編輯”→“清除→“格式”(或全部)。同理,也可以清除多余列的格式。
有時(shí),用戶確實(shí)需要為工作表中空白的區(qū)域預(yù)設(shè)格式,以備將來增加數(shù)據(jù)之用,但一定要使用正確的方法,否則就會(huì)造成大量用不到的區(qū)域被預(yù)設(shè)了格式,徒增文件體積。
如果需要在一行或一列的很大范圍設(shè)置統(tǒng)一的單元格格式,可以選擇整行或整列設(shè)置單元格格式,而不要只選擇行列的一部分單獨(dú)設(shè)置格式。前者不會(huì)造成文件體積虛增的問題,而后者會(huì)增加文件體積。試驗(yàn)一下在兩個(gè)Excel 文件里面分別對(duì)A1∶A65536 設(shè)置單元格格式和對(duì)A∶A 設(shè)置單元格格式,目的都是為A 列設(shè)置格式,但最終文件的體積相差100 倍以上。
3 大量的區(qū)域中包含數(shù)據(jù)有效性
與上一個(gè)原因很類似,如果在數(shù)據(jù)區(qū)域中因?yàn)椴徽_的做法而導(dǎo)致大量單元格區(qū)域內(nèi)包含數(shù)據(jù)有效性的設(shè)置,而這些區(qū)域根本用不上,那么也會(huì)造成文件體積增大。尤其是在數(shù)據(jù)有效性設(shè)置中進(jìn)行了“輸入法”“輸入信息”“出錯(cuò)警告”的設(shè)置,更具有隱蔽性,一般不易發(fā)現(xiàn)。這個(gè)問題的解決辦法和剛才的類似,先選擇工作表中多余的單元格區(qū)域,單擊菜單“數(shù)據(jù)”→“有效性”,在任意選項(xiàng)卡中單擊“全部清除”按鈕,最后單擊“確定”按鈕。
4 包含大量復(fù)雜的公式
如果工作表中包含大量的公式,而每個(gè)公式都因?yàn)橐獔?zhí)行復(fù)雜的計(jì)算而導(dǎo)致內(nèi)容很長(zhǎng),那么文件體積巨大就在所難免了。在這種情況下,只能設(shè)法優(yōu)化公式。比如,在公式中使用名稱代替單元格引用就是個(gè)好辦法。有關(guān)名稱的詳細(xì)內(nèi)容,請(qǐng)參閱第7 章。
這種方法給文件減肥,效果也很明顯,筆者曾將一個(gè)近4 MB 的文件減到約900 KB,減小了近3/4。
解決辦法如下。單擊到真正需要的行號(hào)的下一行,按組合鍵,選擇所有的多余行(也可以在名稱框中輸入行號(hào)如2000∶65536),單擊菜單“編輯”→“清除→“格式”(或全部)。同理,也可以清除多余列的格式。
有時(shí),用戶確實(shí)需要為工作表中空白的區(qū)域預(yù)設(shè)格式,以備將來增加數(shù)據(jù)之用,但一定要使用正確的方法,否則就會(huì)造成大量用不到的區(qū)域被預(yù)設(shè)了格式,徒增文件體積。
如果需要在一行或一列的很大范圍設(shè)置統(tǒng)一的單元格格式,可以選擇整行或整列設(shè)置單元格格式,而不要只選擇行列的一部分單獨(dú)設(shè)置格式。前者不會(huì)造成文件體積虛增的問題,而后者會(huì)增加文件體積。試驗(yàn)一下在兩個(gè)Excel 文件里面分別對(duì)A1∶A65536 設(shè)置單元格格式和對(duì)A∶A 設(shè)置單元格格式,目的都是為A 列設(shè)置格式,但最終文件的體積相差100 倍以上。
3 大量的區(qū)域中包含數(shù)據(jù)有效性
與上一個(gè)原因很類似,如果在數(shù)據(jù)區(qū)域中因?yàn)椴徽_的做法而導(dǎo)致大量單元格區(qū)域內(nèi)包含數(shù)據(jù)有效性的設(shè)置,而這些區(qū)域根本用不上,那么也會(huì)造成文件體積增大。尤其是在數(shù)據(jù)有效性設(shè)置中進(jìn)行了“輸入法”“輸入信息”“出錯(cuò)警告”的設(shè)置,更具有隱蔽性,一般不易發(fā)現(xiàn)。這個(gè)問題的解決辦法和剛才的類似,先選擇工作表中多余的單元格區(qū)域,單擊菜單“數(shù)據(jù)”→“有效性”,在任意選項(xiàng)卡中單擊“全部清除”按鈕,最后單擊“確定”按鈕。
4 包含大量復(fù)雜的公式
如果工作表中包含大量的公式,而每個(gè)公式都因?yàn)橐獔?zhí)行復(fù)雜的計(jì)算而導(dǎo)致內(nèi)容很長(zhǎng),那么文件體積巨大就在所難免了。在這種情況下,只能設(shè)法優(yōu)化公式。比如,在公式中使用名稱代替單元格引用就是個(gè)好辦法。有關(guān)名稱的詳細(xì)內(nèi)容,請(qǐng)參閱第7 章。
這種方法給文件減肥,效果也很明顯,筆者曾將一個(gè)近4 MB 的文件減到約900 KB,減小了近3/4。
5 Excel 的Bug
用戶可以做這樣一個(gè)試驗(yàn)。
這時(shí),Excel 狀態(tài)欄上會(huì)開始顯示進(jìn)度條,等到進(jìn)度條消失,再保存文件,這個(gè)文件的大小將為1.42 MB。對(duì)于這個(gè)工作表,無論用什么方法來清除格式(無論是清除格式、清除全部、單元格全部刪除、復(fù)制其他工作表的格式)都不能復(fù)原。
我們懷疑這是Excel 的一個(gè)鮮為人知的Bug。在Excel 2000 開始的所有Excel 版本中都存在這個(gè)Bug。唯一能解決問題的方法是:按選取全部單元格,單擊菜單“格式”→“行”→“行高”,設(shè)置一個(gè)固定行高(如14.25),馬上保存文件。此時(shí)文件體積才能恢復(fù)為正常大小。
6 使用了大圖片作為工作表背景
如果使用了較大的圖片作為工作表的背景,也會(huì)造成文件體積增大。比如在工作表使用了一個(gè)10 MB 的TIFF 格式圖片作為背景,那么這個(gè)Excel 文件里面即使沒有任何數(shù)據(jù),其體積也會(huì)超過10 MB。
因此,除非特別需要,不要使用工作表背景功能。如果確實(shí)需要,那么用作背景的圖片要盡可能的小。
7 工作表中插入的圖片格式影響文件的大小
如果把BMP、TIFF 等高容量格式的圖片插入到工作表中,或從繪圖軟件中直接復(fù)制圖片粘帖到工作表中,也會(huì)造成文件體積大增。盡管Excel 可以對(duì)已插入的圖片進(jìn)行壓縮,但最好還是先把要插入的圖片進(jìn)行轉(zhuǎn)換、壓縮,比如轉(zhuǎn)換為JPG 等圖片格式,再進(jìn)行插入。
8 共享工作簿引起的體積虛增
許多被長(zhǎng)時(shí)間使用的共享工作簿,文件體積也會(huì)常常虛增到正常情況下的幾倍甚至幾十倍。很少有專門的資料介紹共享工作簿的弊端,這也許是由于多人同時(shí)使用的過程中產(chǎn)生了許多過程數(shù)據(jù)存放于工作簿文件內(nèi)而沒有得到及時(shí)的清理造成的。對(duì)于因此而體積虛增的工作簿文件,可以嘗試取消“共享工作簿”,然后保存文件。通常情況下,就能起到恢復(fù)文件正常體積的效果。如果需要繼續(xù)與他人使用共享工作簿,可以再次開啟“共享工作簿”。
9 其他未知原因
也許還有其他未知原因會(huì)造成Excel 文件患上“肥胖癥”,在此情況下,可以嘗試以下方法。再次保存后得到的文件,通常會(huì)比原來的文件要小很多。
相關(guān)文章
陽歷/農(nóng)歷轉(zhuǎn)換對(duì)照表怎么做? Excel制作日歷表/萬年歷的最終版
想要制作陽歷/農(nóng)歷轉(zhuǎn)換對(duì)照表,,通過這個(gè)對(duì)照表,你只需知道陽歷日期,就可以快速準(zhǔn)確的找到對(duì)應(yīng)的農(nóng)歷日期,下面我們就來看看詳細(xì)制作方法2025-04-10三分鐘就搞定! Excel快速制作一個(gè)日歷表/萬年歷的技巧
工作上需要制作一個(gè)日歷表/萬年歷,該怎么制作呢?我們需要使用三個(gè)excel函數(shù)來實(shí)現(xiàn),詳細(xì)請(qǐng)看下文介紹2025-04-10這個(gè)函數(shù)公式簡(jiǎn)直太強(qiáng)了! excel按權(quán)重求和計(jì)算的技巧
Excel中有一個(gè)功能非常強(qiáng)大的函數(shù),它就是SUMPRODUCT函數(shù),既能求和、計(jì)數(shù)、權(quán)重計(jì)算,還能排名等,今天我們就來看看Excel根據(jù)權(quán)重求和的技巧2025-04-10tocol函數(shù)哪個(gè)版本能用? excel中tocol函數(shù)的兩種高級(jí)用法
TOCOL函數(shù)公式非常強(qiáng)大,值得一學(xué),從字面意義可以理解出來,它是將數(shù)據(jù)轉(zhuǎn)換成一列的,今天分享TOCOL函數(shù)的2種高級(jí)用法2025-04-10Excel隱藏行和折疊行有什么不同? 隱藏行和折疊使用方法和區(qū)別介紹
excel表格進(jìn)行操作的時(shí)候,發(fā)現(xiàn)有隱藏和和折疊行,看上去效果一樣,都隱藏了,但是兩者是有很大區(qū)別的,詳細(xì)請(qǐng)看下文介紹2025-03-21Excel工齡計(jì)算不再愁! Excel隱藏函數(shù)DATEDIF輕松計(jì)算精確到天級(jí)的工齡
在日常工作中,我們經(jīng)常需要計(jì)算員工的工齡,以便進(jìn)行人事管理、薪資調(diào)整等工作,本文將詳細(xì)介紹如何在Excel表格中計(jì)算工齡,并提供多種實(shí)用方法供您選擇2025-03-13快速提高工作效率! Excel高手的8個(gè)技巧勸你學(xué)學(xué)
Excel數(shù)據(jù)處理遇到的問題,99%都是由于奇葩的數(shù)據(jù)格式造成的,今天跟大家整理了幾個(gè)Excel表格構(gòu)建的規(guī)則,先不要問為什么,照著做就對(duì)了2025-03-06Excel透視表1月到12月不能排序怎么辦? 數(shù)據(jù)透視表日期無法排序解決方法
如圖對(duì)數(shù)據(jù)透視表日期進(jìn)行升序排序后,仍不是我們想要的結(jié)果,有可能月份是文本,不能排列,下面我們就來看看詳細(xì)解決辦法2025-03-06財(cái)務(wù)審計(jì)必會(huì)! 2分鐘搞定用excel做賬齡劃分的技巧
首先咱們得明確一下賬齡的概念,簡(jiǎn)單來說,賬齡就是某個(gè)賬戶的余額從產(chǎn)生到現(xiàn)在的時(shí)間長(zhǎng)度,比如,一年以內(nèi)的賬齡就是那些在過去一年內(nèi)產(chǎn)生的債權(quán)或債務(wù),下面我們就來看看2025-03-06實(shí)現(xiàn)辦公自動(dòng)化! DeepSeek搭配Excel制作自定義按鈕的技巧
DeepSeek生成想要的代碼很方便,如果將生成的代碼放到excel中作為vba代碼使用,豈不是能實(shí)現(xiàn)辦公自動(dòng)化?下面我們就來看看實(shí)現(xiàn)方法2025-03-05