The INDIRECT function is a computer program that you run from a worksheet cell formula. It takes a piece of text you give it and flips that text to a usable cell or range reference. You run the INDIRECT worksheet function by typing its name in a formula then followed by the information it is suppose to use. The INDIRECT worksheet function is used where you have to change the cell or range reference you are using dynamically in a formula. It has a great many uses especially in formulas that have to lookup a particular section of a worksheet (called a range) based on user choice or toggle between tables on the worksheet using a single formula. While the INDIRECT worksheet function can be used by itself alone in a formula to return a single cell value, it is more commonly nested where a range reference would normally be placed in a formula. For example, INDIRECT could be used to supply the range reference used by the SUM function, for example =SUM(INDIRECT(B2)) where B2 might contain range name or range reference to be used by SUM.

Whenever you type a formula in a worksheet cell, this is called syntax or grammar. The general INDIRECT function syntax has a format like this when you type it in a worksheet cell:

=INDIRECT(ref_text, [a1])

Where ref_text and [a1] are called the function argument list. Remember, you are running a computer program at this point so the program needs information to operate and that is why there is an argument list. When you see an argument list and you see square brackets [ ] around the argument name, this means the argument is optional and you do not have to include it when typing unless you need it. So for the syntax above, you need to include one argument for the INDIRECT worksheet function when typing it in a worksheet cell formula in order for it to calculate correctly. What argument values can be used are discussed below. Remember functions expect certain things in their argument lists, if you do not put the correct information in the list they will generate an error when run.

- ref_text: A piece of text or
a formula that generates a piece of text where the piece of
text represents a cell or range reference. The piece of text
can represent a traditional cell reference like A1 or A1:B10
and can also be a cell or range name. Note that the
reference can include references to other worksheets and
other workbooks just like traditional external links in a
formula. For example, INDIRECT("Sheet1!$A$1") where the text
Sheet1!$A$1 is generated by some formula like "Sheet1!$A$"
and Sum(A1:A10). As seen just seen, you will be using string
concatenation a lot when using the INDIRECT function.
- If ref_text refers to a cell range outside the row limit of 1,048,576 or the column limit of 16,384 (XFD), INDIRECT returns a #REF! error.

- a1 (Optional): A logical
value (TRUE/FALSE) that specifies reference style is
contained in the cell ref_text.
- If a1 is TRUE or omitted, ref_text is interpreted as an A1 reference style.
- If a1 is FALSE, ref_text is interpreted as an R1C1 reference style.

Since the INDIRECT function is a computer program, it runs when you press Enter to enter the formula that contains it. If any of the arguments are wrong, the function will return an error.

As previously stated, you generally use the INDIRECT function as part of a larger formula usually nested inside another function's syntax as one of its arguments. Since the whole purpose of using INDIRECT is to make a cell reference on the fly (dynamically), you are generally going to see the concatenation operator used a lot to build its ref_text argument. Some typical argument examples are presented below.

Cell Formula | Example Explanation |

= INDIRECT( B2 ) + 4 | INDIRECT takes a piece of text representing a cell reference from B2 and flips it to a range that can be added to 4 |

=SUM( INDIRECT( "A1:A" & COUNTA( A1:A100 ) ) ) | INDIRECT takes the text generated by the formula "A1:A" & COUNTA(A1:A100) and flips it to a reference that is used by SUM |

=VLOOKUP( "100XY" , INDIRECT(B10) , 2, FALSE) | INDIRECT takes the cell name listed in cell B10 flips it to a range reference that allow VLOOKUP to utilize that table |

The worksheet seen below contains some typical worksheet formulas that run the INDIRECT worksheet function. Pay close attention to the argument list and the syntax used to write the formula.

A | B | C | |

1 | Range Name: USA | ||

2 | Item | Price | |

3 | A | $1.00 | |

4 | B | $2.00 | |

5 | Range Name: EUR | ||

6 | Item | Price | |

7 | A | $3.00 | |

8 | B | $5.00 | |

9 | In the formula below, INDIRECT takes the cell text EUR from B11 and flips to the range named EUR. Then VLOOKUP uses that range to perform a table lookup for A | ||

10 | Item | A | |

11 | Region | EUR | |

12 | Price | =VLOOKUP( B10, INDIRECT( B11), 2, FALSE ) |

Our next public Excel training workshops and live online Excel courses are listed below. For all of the
dates and times, please visit our Training Schedule page
using the link above in the main menu.

Need Help? Please call us at 1.866.924.6244

Excel Training Services

EMAGENIT Company Information

Copyright © 2002-2018

EMAGENIT All Rights Reserved