What INDIRECT does
INDIRECT converts a text string into a cell or range reference that Excel can evaluate. This lets you build references dynamically — for example, pulling data from a sheet whose name is stored in another cell.
INDIRECT is a volatile function, which means Excel recalculates it every time anything in the workbook changes, even if the inputs have not changed. This can slow down large workbooks.
Practical examples
Reference a cell dynamically
=INDIRECT("B"&A2)
If A2 contains 5, this returns the value in cell B5. The reference is built from text at runtime.
Pull data from a named sheet
=INDIRECT("'"&A2&"'!C10")
If A2 contains the sheet name "January", this returns the value in cell C10 on the January sheet.
Create a dynamic named range reference
=SUM(INDIRECT(A2&"_Sales"))
If A2 contains "Q1", this sums the named range Q1_Sales.
Common mistakes and notes
INDIRECT is volatile
Every INDIRECT formula recalculates on every change, regardless of whether its inputs changed. In workbooks with thousands of INDIRECT calls, this can noticeably slow down recalculation. Consider replacing INDIRECT with structured Table references or direct sheet links where possible.
Breaks when references change
Because INDIRECT works with text strings, it does not update automatically when you rename sheets, move cells, or insert rows. A reference like "Sheet1!A1" stays exactly that text even if Sheet1 is renamed to "Data".
Cannot reference closed workbooks
INDIRECT only works with open workbooks. If the referenced workbook is closed, the formula returns a #REF! error.