Guides
Why Is Excel So Slow? 6 Causes of Slow Calculation and How to Fix Them
Updated 2026-10-13
A slow workbook is usually one of three things, and each has a different fix:
| Symptom |
Usual cause |
| Slow to open and save, large file |
File size: style bloat, formatting on empty cells, pivot caches, large images |
| Every edit shows "Calculating" in the status bar |
Recalculation: volatile functions, whole-column references, repeated work |
| Scrolling and selecting lag |
Fragmented conditional formatting, many images or shapes |
For size problems, see Why is my Excel file so large?. The rest of this guide is about formulas.
1. Volatile functions
OFFSET, INDIRECT, TODAY, NOW, RAND, RANDBETWEEN, and CELL and INFO in some forms are volatile: after any edit anywhere in the workbook they recalculate, together with every formula that depends on them. A few thousand of them make every edit stall.
Fix:
- Replace
OFFSET dynamic ranges with INDEX, which is not volatile:
=SUM(OFFSET(A1,0,0,COUNTA(A:A),1)) → =SUM(A1:INDEX(A:A,COUNTA(A:A)))
- Put
TODAY() in one cell and reference that cell everywhere else.
- Where
INDIRECT builds sheet names or addresses, use direct references, INDEX or CHOOSE instead when you can.
2. Whole-column references inside array calculations
Functions such as SUMIF(A:A,…) are limited to the used range automatically, so they cost little. But A:A inside SUMPRODUCT or an array formula makes Excel process all of the more than one million rows.
Fix: limit the range to your data, for example A2:A5000, or turn the data into a table (Ctrl + T) and use structured references, which grow with the table.
3. The same work done twice
=IF(ISERROR(VLOOKUP(…)),"",VLOOKUP(…)) runs the VLOOKUP twice.
Fix: use =IFERROR(VLOOKUP(…),"") so it runs once. When several columns in a row look up the same value, compute MATCH once in a helper column and use INDEX everywhere else instead of searching again in every column.
4. VLOOKUP over a whole table
=VLOOKUP(A2,Sheet2!A:Z,5,FALSE) depends on every column from A to Z, so a change to any cell there recalculates every such lookup.
Fix: use INDEX and MATCH to reference only the two columns you need: =INDEX(Sheet2!E:E,MATCH(A2,Sheet2!A:A,0)).
5. Conditional formatting and format bloat
Copying and dragging rows splits conditional formatting into hundreds or thousands of pieces that Excel evaluates as you scroll and edit. Open Home > Conditional Formatting > Manage Rules, delete the duplicates and apply one rule to the whole column.
6. Stopgap: switch to manual calculation
Under Formulas > Calculation Options, choose Manual. Excel stops recalculating while you edit; press F9 to calculate when you're done.
Note that the setting is saved with the workbook, so someone else may open it and see stale results. Switch back to Automatic when you're finished.
Fix it in one step
- Don't know what's slowing it down? Run a check-up first. It tells size problems from formula problems (volatile functions, whole-column references, circular references) and settings (manual calculation), and points to the right tool.
- The formula optimizer rewrites every formula it can prove equivalent into a faster form, removing volatility and repeated work. Each rewrite must pass three checks that the result is unchanged; anything it can't prove stays as is and is listed in the report with suggestions. By default it only uses functions available since Excel 2010, so older versions can still open the file.