Summary

The Excel CHOOSE function returns a value from a list using a given position or index. For example, =CHOOSE(2,"red","blue","green") returns "blue", since blue is the 2nd value listed after the index number. The values provided to CHOOSE can include references.

Purpose 

Get a value from a list based on position

Return value 

The value at the given position.

Syntax

=CHOOSE(index_num,value1,[value2],...)
  • index_num - The value to choose. A number between 1 and 254.
  • value1 - The first value from which to choose.
  • value2 - [optional] The second value from which to choose.

How to use 

The CHOOSE function returns a value from a list using a given position or index. The values provided to CHOOSE can be hard-coded constants or cell references. The first argument for the CHOOSE function is index_num. This is a number that refers to subsequent values by index or position. The next arguments, value1, value2, value3, etc. are the values from which to choose from. Choose can handle up to 254 values. However, CHOOSE will not retrieve an item from inside range or array constant provided as a value.  For larger sets of data in a table or range,  INDEX and MATCH is a better way to retrieve a value based on position.

Examples

The formulas below use CHOOSE to return the 2nd and 3rd values from a list:

CHOOSE(2,"red","blue","green") // returns "blue"
CHOOSE(3,"red","blue","green") // returns "green"

Above, "blue" is the second value, and "green" is the third value. In the example shown in the screenshot, the formula in cell C5 is:

CHOOSE(B5,"red","blue","green") // returns "red"

CHOOSE will not retrieve values from a range or array constant. For example, the formula below will return a #VALUE error:

=CHOOSE(2,A1:A3)  // returns #VALUE

This happens because the index number is out of range. In this case, the required syntax is:

=CHOOSE(2,A1,A2,A3)

To retrieve the nth item from a range, use INDEX and MATCH. CHOOSE can be used to provide a variable table to a function like VLOOKUP:

=VLOOKUP(value,CHOOSE(index_num,rng1,rng2),2,0) // variable table

Notes

  • If index_num is out of range, CHOOSE will return #VALUE
  • Values can also be references. For example, the address A1, or the ranges A1:10 or B2:B15 can be supplied as values.
  • CHOOSE will not retrieve values from a range or array constant.
Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.