Stop Compressing Images — Try This Instead to Decrease Excel File Size

The first thing most people do when their Excel file balloons to 25 MB is right-click every picture and select Compress Pictures. That’s usually the wrong move — especially if your file contains Power Query connections, legacy OLE objects, or hundreds of hidden rows in Sheet7. I just opened a 48 MB workbook from Finance last Tuesday. The pictures? Total size: 1.2 MB. The real culprit? A forgotten embedded PowerPoint slide (19 MB) and 32,000 blank rows stretching to row 1048576 in 'Archive_Data'.

The Problem

Large Excel files don’t just load slowly — they crash during shared editing, fail to upload to Alibaba Cloud Drive, and make version control nearly impossible. Worse, users chase surface symptoms: ‘It’s the charts!’ ‘It’s the formulas!’ In reality, Excel file bloat hides in plain sight — often in places you never inspect.

Sheet NameUsed RangeLast Cell AddressFile Impact
Sales_Q1_2024A1:G214G214Low
Archive_DataA1:Z32000Z1048576High
PivotCache_Backup(hidden)Critical
Charts_MasterA1:KJ500KJ500High
[Embedded] QBR_PPTOLE objectExtreme
Formulas_DebugA1:C10C10Low

This is the exact structure of Q4_Financials_Final_v12.xlsm — the file that froze three colleagues’ laptops during yesterday’s cross-regional sync. Notice how Archive_Data claims only 32k used rows but stretches all the way down to row 1,048,576. That’s 1 million+ blank rows silently inflating the file. And [Embedded] QBR_PPT? Not a link. Not a screenshot. A full embedded PowerPoint with animations and fonts — 19.3 MB alone.

The Solution

Forget compression. Start here — in this exact order. These steps cut our 48 MB file down to 3.7 MB in under 4 minutes. No macros needed. No third-party tools.

  1. Delete truly unused worksheets: Right-click each tab > Delete. Don’t just hide them. Hidden sheets still bloat the file. In our case, PivotCache_Backup and Formulas_Debug were redundant copies — gone in 8 seconds.
  2. Reset used range on every active sheet: Go to Archive_Data. Press Ctrl + End. If cursor lands past row 32,000 — you’ve got ghost rows. Select row 32001 > press Ctrl + Shift + ↓ to highlight all empty rows to bottom. Right-click > Delete Row. Repeat for columns — if column AA is blank all the way down, select column AB > Ctrl + Shift →, then delete.
  3. Convert embedded objects to links or static images: Click the PowerPoint icon in [Embedded] QBR_PPT. Press Alt + J + O + E to open Object dialog. Choose Convert > PNG Picture. Confirm. Then delete the original OLE object. You’ll lose interactivity — but gain 19 MB back.
  4. Clean conditional formatting ranges: On Sales_Q1_2024, select B2:G214. Go to Home > Conditional Formatting > Manage Rules. Look for rules applied to $B$2:$G$1048576. Edit each one and shrink the Applies to range to match actual data — e.g., $B$2:$G$214.
StepActionResultShortcut
1Delete unused sheets: PivotCache_Backup, Formulas_Debug-1.2 MBRight-click tab > Delete
2Clear rows 32001–1048576 in Archive_Data-14.8 MBCtrl + Shift + ↓ then Ctrl + –
3Convert embedded PPT to PNG in [Embedded] QBR_PPT-19.3 MBAlt + J + O + E
4Shrink CF range on Sales_Q1_2024 from $B$2:$G$1048576 → $B$2:$G$214-2.1 MBAlt + H + L + M

After those four steps, we ran File > Info > Check for Issues > Inspect Document. The Inspector flagged two things: a leftover comment in cell D17 (deleted), and an auto-filter state on row 1 of Charts_Master (cleared via Ctrl + Shift + L). Final size: 3.7 MB. Opens in under 2 seconds. Shared cleanly via Alibaba Workbench.

Going Further

If you’re maintaining templates or dashboards used by dozens of people, go deeper:

  • Replace volatile functions: =NOW(), =TODAY(), =INDIRECT(), and =OFFSET() force full recalculation — and can inflate saved calculation states. Swap =OFFSET(A1,0,0,100,5) with =INDEX(A:E,SEQUENCE(100),SEQUENCE(1,,5)) (in Excel 365). Saves ~200 KB per sheet with heavy use.
  • Store lookup tables externally: Move your Product_Codes and Region_Mapping sheets into a separate Reference_Data.xlsx, then pull in with =XLOOKUP(..., IMPORTDATA("path\ref.xlsx")) — no, wait — don’t use IMPORTDATA (it doesn’t exist in desktop Excel). Use =XLOOKUP(A2,'Z:\Shared\Ref\[Reference_Data.xlsx]Codes'!A:A,'Z:\Shared\Ref\[Reference_Data.xlsx]Codes'!B:B). Breaks the dependency and trims 1.8 MB off the main file.
  • Disable automatic calculation during cleanup: Before running any of the above, press Alt + M + X, then choose Manual. Prevents Excel from recalculating 50,000 cells while you’re deleting rows. Re-enable with same shortcut after.
  • Save as .xlsb: Yes, it’s binary — but it compresses formulas, formats, and cell metadata far better than .xlsx. Our 3.7 MB .xlsx became 2.1 MB as .xlsb. Just confirm all users have Excel 2007+ (they do — Alibaba mandates Office 365).

One counterintuitive tip: Don’t delete blank columns left of your data. If your real data starts at column F, but columns A–E are truly empty, leave them. Excel stores column width/visibility metadata per column — deleting columns A–E forces it to rewrite metadata for *all* remaining columns. Better to hide them (Ctrl + 0) and clear contents (Ctrl + A, Delete).

When NOT to Use This

These fixes aren’t universal. Avoid them in these cases:

  • You rely on Excel’s ‘used range’ for VBA automation: Some legacy macros assume ActiveSheet.UsedRange.Rows.Count returns the true max. Shrinking the used range breaks them. Audit first — add Debug.Print ActiveSheet.UsedRange.Address before/after.
  • The file is protected with sheet-level passwords: Deleting rows/columns in a protected sheet triggers errors. Unprotect first (Alt + R + A), clean, then reprotect with same password.
  • You’re using Power Pivot models with large imported tables: Removing blank rows in the source sheet won’t shrink the data model. You must refresh the Power Pivot connection *after* cleaning source data — and then click Power Pivot > Manage > Home > Analyze > Optimize Model.
  • It’s a shared workbook (.xlsb or .xlsx with ‘Share Workbook’ enabled): That feature is deprecated and adds massive overhead. Turn it off (Review > Share Workbook > uncheck) before attempting any size reduction.

Also: Never run ‘Compress Pictures’ on files containing charts built with =SERIES() formulas or legacy Excel 2003 chart types. It corrupts axis scaling. We saw it happen twice last month with regional sales dashboards.

Keyboard Shortcuts

ShortcutActionNotes
Ctrl + EndJump to last used cell (reveals ghost ranges)Most reliable first diagnostic
Alt + J + O + EOpen Object dialog (for embedded items)Works even if object is invisible
Alt + H + L + MOpen Conditional Formatting Rules ManagerEssential for spotting oversized rules
Alt + M + XToggle calculation mode (Automatic/Manual)Prevents slowdown during cleanup
Ctrl + GSpecialBlanksSelect all blank cells in current rangeUseful before clearing formats
Alt + R + AUnprotect sheetRequired before editing protected sheets
Lisa Anderson

Lisa Anderson

Lisa is a certified Microsoft trainer who writes step-by-step guides for Power Automate