- INDIRECT evaluates references constructed as text to return their contents, allowing dynamic references.
- Supports A1 (default) and F1C1 styles; can be combined with SUM or VLOOKUP for multi-sheet reports.
- External references require the source workbook to be open; references outside the grid return an error.

If you've ever wanted a formula to dynamically reference a cell, range, or even another sheet without rewriting the formula each time, the INDIRECT function is your best friend. With it, you can build references from text, cells, or combinations of both, and Excel will evaluate that reference to instantly return its contents.
The beauty of INDIRECT is that it allows you to change which cell or range a formula references without altering the formula itself , which is ideal for reports, dashboards, and templates with data spread across multiple sheets. Furthermore, it works well as a glue for other functions (SUM, VLOOKUP, etc.), enabling chained references and centralized reports.
What does the INDIRECT function do in Excel?
INDIRECT returns the content of a reference that we pass to it as text . That text string can be as simple as "B2" or as elaborate as "'Sales 2024'!C5"; it can also come from values that are in other cells and that we concatenate with the & operator to build the complete reference.
When the reference sent to INDIRECT is valid, Excel evaluates it and displays the value of that cell or range . If the reference is invalid or points outside the sheet boundaries, errors such as #REF! or #VALUE! will appear, depending on the case.
There's an important distinction: if you reference another workbook (file) using text, the source workbook must be open for the function to resolve the reference. If that file is closed, INDIRECT will return an error (#REF! or #VALUE!).
Furthermore, Excel will not accept references that fall outside the grid: if the text points beyond row 1.048.576 or column XFD (16.384), INDIRECT will not be able to resolve it and will fail.
INDIRECT syntax and arguments
The general syntax is =INDIRECT(ref; ) . The first argument is required and the second is optional, and they control how the reference is interpreted.
`ref` is the text that represents the reference you want to evaluate. It can be a literal string (for example, "B3"), the contents of a cell (A2, A3, etc.), a defined name that points to a cell or range, or even a reference that combines several pieces using `&` to build it in real time.
a1 is an optional logical value that indicates the reference style: if it is TRUE (or you omit it), Excel interprets the reference in A1 format ; if it is FALSE, it considers the reference in F1C1 style . This argument does not point to the cell, but rather defines the "language" of the reference.
Note that if the text string you pass in ref does not represent a valid reference (for example, it has incorrect syntax or the range does not exist), INDIRECT will return an error (#REF! or #VALUE! depending on the context) instead of the expected value.
References A1 and F1C1 (R1C1): what they mean and when to use them
In Excel, the most common style is the A1 format , where columns are identified by letters (A, B, C, …) and rows by numbers (1, 2, 3, …). An address like A10 indicates the intersection of column A and row 10.
The alternative style is F1C1 (with F for row and C for column), where both coordinates are numeric. For example, F5C10 represents the intersection of row 5 and column 10, which can be useful for automating or programmatically generating references.
In practice, if you don't specify the second argument of INDIRECT or set it to TRUE, the function will assume you're working in A1 . If you need the reference to be interpreted as F1C1, use FALSE as the second argument.
Basic examples and expected results
Let's look at several typical situations to understand how INDIRECT works with simple references, defined names, and text concatenation. These patterns are the foundation for more complex scenarios.
| Facts & figures | Formula | Description | Result |
|---|---|---|---|
| A2 = "B2" and B2 = 1,333 | =INDIRECT(A2) | The formula takes the text from A2 ("B2") as the address and read the value of B2. | 1,333 |
| A3 = "B3" and B3 = 45 | =INDIRECT(A3) | Again, A3 saves the address; INDIRECT returns what is in B3. | 45 |
| B4 has a defined name (e.g., "George") and its value is 10 | =INDIRECT("Jorge") | The function uses the defined name and retrieves the associated value (cell B4). | 10 |
| A5 = 5 and B5 = 62 | =INDIRECT("B"&A5) | The reference is built by concatenating "B" with the 5 of A5; points to B5. | 62 |
Note that in all cases the reference originates from text (whether literal, from another cell, or from a name). That is the essence of INDIRECT: converting a valid string into a live reference.
Quick summary of use
If you need a quick guide so you don't get lost, here's a very useful and straightforward mini cheat sheet, designed for everyday use :
- Use the form =INDIRECT(text_reference) so that Excel evaluates the stored or constructed reference as text.
- In the reference argument, you can pass a complete address (for example, C2) or join letter and number with & (for example, «C»&2).
- To get to another sheet, compose the text with the sheet name and cell: =INDIRECT(«'»&Sheet&»'!Cell»).
Keep in mind that if the sheet name contains spaces or special characters, you must enclose its name in single quotes within the text: 'Sales Seville' for example.
Building references from text and cells
One of the great advantages of INDIRECT is its ability to concatenate elements to create flexible paths. For example, if you store the column letter in B1 and the row number in B2, you could use =INDIRECT(B1 & B2) and Excel will point to that address.
If, on the other hand, you want to fix the column and only vary the row by means of a cell, something like =INDIRECT("C" & B2) will always return what is in column C, row indicated by B2.
These tricks are very powerful when you build panels with selectors (data validations, drop-down menus , etc.) that control which direction to look in at any given time.
References to other sheets and other books
To point to another sheet, the basic pattern is =INDIRECT("'"&SheetName&"'!Address") . If the sheet name is in A1 and you want to go to its cell C1, you would use something like =INDIRECT("'"&A1&"'!C1").
This approach allows you to create a "summary" sheet that gathers data from multiple tabs with an identical structure . By changing the sheet name in a cell (or via a dropdown menu), the formula will automatically retrieve the data from that sheet.
With external workbooks, the idea is similar, but with one condition: the workbook must be open. If you try something like =INDIRECT("January!"B2) with the workbook closed, it will return an error; open it and it will work.
Powerful Combinations: SUM, VLOOKUP, and More
INDIRECT rarely stands alone. Its magic appears when you combine it with other functions. For example, to sum a range B1:B5 in a sheet whose name is in A3, you could write =SUM(INDIRECT(""&A3&"'!B1:B5")).
To build dynamic lookups across sheets, you can define the range of the VLOOKUP function starting from INDIRECT: =VLOOKUP(E2, INDIRECT("'"&D1&"'!A3:D6"); 4, FALSE) . By changing the content of D1 to the name of another sheet, the lookup adjusts without changing the formula.
If you only want the range to reuse it in various parts of the sheet, you can generate the reference with =INDIRECT("'"&D1&"'!A3:D6") and then use it in the function that suits you.
Lock references when inserting rows or columns
One key detail: a classic reference like =A5 updates if you insert a row above it (it will become =A6). In contrast, =INDIRECT("A5") will still point to the address A5 as text, even if that cell is now empty or contains something else.
This is very useful when you need a formula to remain fixed in one direction despite restructuring the sheet by inserting or deleting rows/columns. However, use it intentionally: if you really wanted to track the value that was "before" in A5, then a direct reference might be better.
Case study: sales by city between tabs
Imagine you have a sheet for each city (Barcelona, Madrid, Seville, Bilbao), all with the same table positioned in the same ranges. You want a report that displays key figures based on the city selected in a selector. INDIRECTO is a perfect fit.
Step by step: Create the "Report" sheet, add a cell with a drop-down list of cities (for example, in D3 ), and build the summary table. In cell E7 of that table, type =INDIRECT($D$3&"!B2") to retrieve the data from cell B2 for the selected city.
The dollar sign ($) fixes the reference to cell D3 so that when you copy or drag the formula around the table, it will always read the selector . Then, if you change "Seville" to "Madrid" in cell D3, the formula will automatically pull data from cell B2 of the "Madrid" sheet.
Repeat the pattern for the rest of the cells you need (B3, B4, etc.), keeping the same design between city sheets so that the mapping is consistent and maintenance is minimal.
Chained references and flexible construction
INDIRECT also lends itself to string references. For example, if A1 contains the text "B1" and B1 contains the number 5, =INDIRECT(A1) will first resolve A1 (which contains B1) and then return the value of B1 (which is 5).
The interesting thing is that you can split the address into parts: a letter in the formula itself and the row in a cell. With =INDIRECT("B" & A5) , Excel concatenates column B with the number in A5 and returns the value at that intersection.
This type of construction is useful when you have arrays with the same geometry across multiple sheets and you want to retrieve specific cells without repeating formulas for each tab.
Good practices, limits and common mistakes
If you are going to build references to sheets whose names contain spaces or special characters, always enclose them in single quotes within the string: 'Sales Seville' is the correct way.
If you try to create an address that falls outside the Excel grid (beyond XFD or row 1.048.576), the function won't be able to resolve it and will return an error. It's pure logic: you're asking for something that doesn't exist.
When using external references to other files, remember to open the target workbook. If it's not open, INDIRECT cannot evaluate the path and returns #REF! or #VALUE! depending on the situation.
If you see a #VALUE! when concatenating, check that you are not adding text with unconverted numbers, or that the structure of the quotation marks and the exclamation mark is correctly set up (especially in references to sheets: «'Sheet'!Cell»).
More useful examples for everyday life
Suppose you have a list of months in cell A3 and you want to sum the values in cells B1:B5 of the sheet corresponding to the selected month. Using =SUM(INDIRECT(""&A3&"'!B1:B5")) you can make the sum change as you change the month in cell A3.
To define a dynamic range that feeds into other calculations, you can use =INDIRECT("'"&D1&"'!A3:D6") . This phrase creates the range A3:D6 from the sheet whose name is in D1, and from there you can fit it into SUM, AVERAGE, or a lookup.
If you prefer to use the F1C1 style for some reason (for example, in macros or models that work with numeric indices), adjust the second argument : =INDIRECT("F5C10", FALSE) so that Excel interprets the string in F1C1 format.
Tips for reports and dashboards
Centralize the destination names (cities, months, products) on one sheet and use data validation to select them. This way, you only need to change the selector , and the rest of the report updates automatically.
Standardize the structure across sheets (same headers, same position of key metrics). This consistency will ensure that formulas like =INDIRECT("'"&Selector&"'!FixedCells") work flawlessly.
If you need to freeze a reference even when rows or columns are inserted, change direct references to indirect references with fixed text . This prevents Excel from automatically adjusting paths.
By mastering these concepts, the INDIRECT function becomes a wildcard: dynamic references, multi-sheet reports, and robust formulas that remain unbroken by minor structural changes. A simple yet incredibly versatile tool for taking your Excel workbooks to the next level.
Passionate writer about the world of bytes and technology in general. I love sharing my knowledge through writing, and that's what I'll do on this blog, show you all the most interesting things about gadgets, software, hardware, tech trends, and more. My goal is to help you navigate the digital world in a simple and entertaining way.
