Cat On A Spreadsheet
Excel is a spreadsheet, but it's also a real-time calculation engine—one that recalculates thousands of cells instantly as users interact with the workbook. But as models get larger, this recalculation process can slow to a crawl. Understanding how Excel calculates helps you build faster, more efficient spreadsheets and avoid performance pitfalls. This post explores how Excel's calculation engine works, what causes slowdowns, and how to avoid them.
Every time a cell is edited, Excel determines what other cells depend on that change and recalculates only the necessary ones. It uses a dependency tree to keep track of relationships between formulas.
Excel supports three modes:
Automatic: Excel recalculates whenever any change is made (default)
Automatic Except for Data Tables: Skips data tables unless forced
Manual: Recalculates only when you press F9 or call it via VBA
Programmatically, you can change modes via:
Volatile functions force Excel to recalculate the cell every time any calculation occurs, regardless of whether its inputs have changed. They can be useful but, overused, they severely degrade performance.
Common volatile functions include:
NOW()
TODAY()
RAND() and RANDBETWEEN()
OFFSET()
INDIRECT()
CELL() (with some arguments)
INFO()
AREAS()
Each volatile function makes its cell and any dependent formulas recalculate every single time something happens in the workbook.
Even if you don’t use volatile functions, poor formula structure can lead to cascading recalculations. For example:
Cell A1 references A2
A2 references A3
A3 references a volatile function
Now any change in the workbook causes A3 → A2 → A1 to recalculate—even if A1 appears unrelated to the edited cell.
Array formulas that operate over large ranges can slow performance, especially if they span entire columns (e.g., A:A). Excel’s dynamic arrays make things easier and more transparent, but still follow the same calculation logic. Avoid array formulas that reference unnecessary rows or columns.
Here are some of the most common causes of slow calculation:
Overuse of Volatile Functions
Formulas referencing entire columns
Too many array formulas
Excessive use of INDIRECT() or OFFSET()
Deep dependency trees (long chains of formulas)
UDFs (User Defined Functions) that are inefficient or volatile
Frequent formatting or event-triggered macros during calculation
Use NOW() or TODAY() sparingly. If you only need to timestamp something, use VBA to hard-code the date instead:
Instead of volatile functions like OFFSET(), use structured tables or INDEX():
Break complex calculations into intermediate steps. It's easier for Excel (and humans) to process.
Built-in functions like SUMIFS(), XLOOKUP(), and FILTER() are optimized in Excel’s internal engine. They’re faster and more reliable than manually constructed arrays.
Replace SUM(A:A) with SUM(A1:A1000) - while it may still include some rows outside your actual range, there's a difference between processing one thousand and one million rows.
If you're building a very large model, switch to manual mode while editing:
Don’t forget to switch it back or notify users.
Excel offers tools to inspect dependencies and performance:
Formula Auditing > Evaluate Formula: See calculation steps
Ctrl + [: Navigate to precedent cells
Ctrl + Shift + ]: Navigate to dependents
Workbook Calculation Timer (in VBA): Track how long it takes to calculate
Excel is optimized for speed, but its calculation engine depends heavily on how you structure your formulas. Understanding how dependencies and volatility affect recalculation allows you to build models that are not only powerful—but responsive and user-friendly. Design with performance in mind, and Excel will reward you with real-time responsiveness—even in large workbooks.
Cat On A Spreadsheet