When an Excel workbook containing only a few hundred rows of simple text swells to tens or hundreds of megabytes, hidden rows or columns are typically forcing Excel to track an inflated “Used Range.” Even if rows or columns appear empty, applied formatting, invisible whitespace characters, or hidden filtered rows make Excel track all 1,048,576 rows and 16,384 columns in memory and on disk. You can fix this bloat by unhiding the worksheet, purging the empty rows and columns, and resetting the used range boundary.
Fast Fix
Press Ctrl + A to select the entire sheet, then right-click row and column headers and choose Unhide. Press Ctrl + End to identify the bloated boundary. Select the first truly blank row below your data, press Ctrl + Shift + Down Arrow, right-click the row numbers, and click Delete (not Clear). Repeat for empty columns. Save and reopen the file.
Diagnostic Snapshot
| Symptom | Cause | Diagnostic Test |
|---|---|---|
| File size is 50+ MB for simple text tables | Blank or hidden rows contain formatting all the way down to row 1,048,576 | Press Ctrl + End. Cursor jumps to the bottom or far right of the sheet. |
| Scrollbar thumb is extremely small and jumps erratically | Excel treats millions of empty cells as active data points | Dragging the scrollbar jumps past your actual data into empty space. |
| Excel hangs on saving, opening, or recalculating | XML file structure is writing entries for thousands of empty rows | Check .xlsx archive size; sheet1.xml is unusually large. |
| Deleting row contents fails to reduce the file size | User pressed Delete (Clear Contents) instead of deleting the rows themselves | Empty rows remain in the grid, retaining their formatting tags. |
What Is the “Used Range” and Why Does It Bloat?
Excel stores worksheet grids in an XML coordinate table. To save space, it only writes records for cells that fall within its active bounding box, known as the UsedRange.
The Used Range starts at cell A1 and ends at the intersection of the highest row and column that have ever held data, custom formatting, cell borders, or formulas:
A1 ─────────────────────────────── D1
│ [Your Real Data Table] │
│ (100 Rows x 4 Columns) │
D100 ─────────────────────────────┘
│
│ [Invisible Bloat: Empty cells with borders, fill, or spaces]
│
▼
XFD1048576 <── The "Ghost" UsedRange (Excel tracks all 17+ billion cells)
Bloat happens when a user applies a format (such as a yellow fill, a border, or accounting format) to an entire column or row by clicking the header. If rows or columns are then hidden without clearing their properties, Excel treats all 1,048,576 rows as active. When saved, the underlying XML file writes cell records for every empty cell, causing the file size to skyrocket.
Step-by-Step Resolution
Step 1: Run the Used Range Diagnostic Test
Before modifying the sheet, identify where Excel believes your data ends.
- Open the problem worksheet.
- Press Ctrl + End.
- Look at the active cell indicator:
- If your real data ends at cell
E50, but Ctrl + End moves the cursor toZ1048576orXFD50000, your Used Range is bloated.
- If your real data ends at cell
- Check whether rows or columns are hidden:
- Look at the row numbers on the left. If they skip from
50to100, rows are hidden. - If the scrollbar on the right is tiny, ghost rows extend far below your view.
- Look at the row numbers on the left. If they skip from
Step 2: Unhide All Rows and Columns
You cannot properly delete ghost ranges if they are hidden behind filters or manual hides.
- Click the Select All button (the triangle in the top-left corner where row and column headers meet), or press Ctrl + A.
- Right-click any row header on the left and select Unhide.
- Right-click any column header at the top and select Unhide.
- If the sheet contains active filters, navigate to the Data tab and click Clear to reveal any filtered rows.
Step 3: Hard-Delete Ghost Rows and Columns
Pressing the Delete key on your keyboard only clears cell contents; it leaves cell formatting intact, keeping the Used Range bloated. You must delete the rows and columns themselves.
- Click the row header of the first truly empty row directly below your actual data table.
- Press Ctrl + Shift + Down Arrow to select all rows down to row 1,048,576.
- Right-click the highlighted row numbers on the left margin and select Delete (do not click Clear Contents).
- Next, click the column header of the first truly empty column directly to the right of your data.
- Press Ctrl + Shift + Right Arrow to select all columns to the edge of the sheet (column XFD).
- Right-click the highlighted column letters at the top and select Delete.
- Immediately save the workbook (Ctrl + S). Excel will not reset its internal Used Range pointer until the file is saved.
- Press Ctrl + End to verify that your cursor now lands at the true end of your data table.
For related issues where excess formatting reaches application limits, see “Too many different cell formats” (The 64k Format Limit).
Step 4: Reset the Used Range Using VBA
If manual row deletion does not reset the boundary, a ghost object or hidden XML anchor is keeping the range active. A VBA script will force Excel to recalculate the Used Range immediately.
- Press Alt + F11 to open the Visual Basic Editor.
- Click Insert > Module.
- Paste the following code into the window:
Sub ResetUsedRange() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.UsedRange Next ws MsgBox "Used range successfully reset across all sheets.", vbInformation End Sub - Place your cursor inside the macro and press F5.
- Return to Excel, press Ctrl + S to save the workbook, close it, and check the file size in File Explorer.
Step 5: Clean Excess Formatting via Microsoft Inquire
If your organization uses Microsoft 365 Apps for enterprise or Office Professional Plus, use the built-in Inquire diagnostic add-in to clean excess formatting without manual deletions.
- Go to File > Options > Add-ins.
- In the Manage dropdown at the bottom, select COM Add-ins and click Go.
- Check the box for Inquire and click OK.
- Click the newly added Inquire tab on the Excel ribbon.
- Click Clean Excess Cell Formatting.
- Choose All Worksheets and click OK.
- Save the workbook under a new filename and compare the file size.
Hard Stops and Alternative Formats
- Hidden Excel Objects and Shapes: If you deleted all empty rows and columns, but Ctrl + End still jumps into empty space, a transparent shape, empty text box, or microscopic button is located in that cell. Press F5, click Special, select Objects, and click OK. If Excel highlights an object in empty space, press Delete.
- Save As Binary Workbook (.xlsb): If your workbook contains genuine, unbloated data spanning hundreds of thousands of rows and the file size remains high, change the file format. Go to File > Save As and choose Excel Binary Workbook (*.xlsb). This compresses the underlying data into a binary stream, reducing file size by 50% to 75% while speeding up open and save times. For guidance on working with binary workbooks, read How to Fix “Excel is not responding” when Opening Large Binary (.xlsb) Files.