
Select a value or reference from a list based on an index number. CHOOSE is useful for fixed option lists, scenario switches, and simple mapping formulas.
The Excel CHOOSE function uses an index number to return one value from a list of values. Microsoft describes it as a way to select one of up to 254 values based on position. If the index is 1, CHOOSE returns the first item. If the index is 2, it returns the second, and so on.
That makes CHOOSE useful when the list of possible results is fixed and small. Instead of writing several IF tests, you can map position 1 to one result, position 2 to another, and position 3 to another.
CHOOSE can return either ordinary values or references. That second behavior is important because it means the function can also be used to switch between ranges, not just between text labels or numbers.
Returns the first, second, third, or later item from a fixed list based on the index number.
Returns the item at the chosen position. That item can be text, a number, a formula result, or a range reference.
=CHOOSE(index_num, value1, [value2], ...)
index_num tells Excel which item to return, and the remaining arguments are the available choices. For example, =CHOOSE(2, "Red", "Blue", "Green") returns "Blue" because it is the second item in the list.
Microsoft notes that index_num must be between 1 and 254. If it is less than 1 or greater than the number of values provided, CHOOSE returns #VALUE!. If the index is a fraction, Excel truncates it to the lower integer before using it.
The values do not all need to be the same type. A CHOOSE formula can mix text, numbers, cell references, named ranges, and even formulas. What matters is that the index points to the option you want.
CHOOSE is best compared with functions that also return one of several possible results, but use different selection logic.
| Function | Main Logic | Use When |
|---|---|---|
CHOOSE |
Position-based selection | You already have a numeric position such as 1, 2, or 3 |
SWITCH |
Match one value against listed cases | You want to match a specific text or code directly |
IFS |
Evaluate multiple conditions | The result depends on true/false tests, not position |
INDEX |
Return an item from a range by row and column | You need to retrieve from a worksheet range rather than a short argument list |
Use CHOOSE when the workbook already has a position number. If the workbook needs to search for a value in a range, INDEX or XLOOKUP is usually a better fit.
One common use of CHOOSE is scenario switching. If 1 means upside, 2 means base, and 3 means downside, a single CHOOSE formula can return the right rate or assumption without nested IF statements.
Another useful pattern is returning a reference. Because CHOOSE can return ranges, you can pass its result into functions like SUM or AVERAGE and switch the source range dynamically.
Microsoft also notes that CHOOSE can work with array constants. That makes it useful for returning more than one item at once or for rearranging ranges in a new order.
This formula uses the number in B1 to return one of three rates. If B1 contains 2, CHOOSE returns the second rate. This is a compact way to let one control cell switch between fixed scenarios.
=CHOOSE(B1, 0.15, 0.10, 0.05)
Choose the first item from the list "Base", "Optimistic", and "Pessimistic". Formula: =CHOOSE(1, "Base", "Optimistic", "Pessimistic").
This pattern is similar, but the output is intended to feed another calculation. Instead of storing the rate directly in the formula that calculates tax or cost, CHOOSE selects the correct rate first and the outer formula uses it.
=CHOOSE(B1, 0.05, 0.10, 0.20)
If B1 is 2, return the second rate from 0.05, 0.10, and 0.20. Formula: =CHOOSE(B1, 0.05, 0.10, 0.20).
Using {1,2} asks CHOOSE for more than one position at the same time. This is useful when you want to return multiple items together or rearrange the order of columns or ranges.
=CHOOSE({1,2}, B2:B3, A2:A3)
Return the text for the first position in the list "Mon", "Tue", and "Wed". Formula: =CHOOSE(1, "Mon", "Tue", "Wed").
When a code already represents a position, CHOOSE can translate it directly into a label. This is often simpler than writing nested IF formulas for a short list of possible outputs.
=CHOOSE(B1, "Fail", "Standard", "Elite")
Return both the first and second choices by using an array constant. Formula: =CHOOSE({1,2}, "A", "B").
CHOOSE returns one item from a fixed list based on position.=CHOOSE(index_num, value1, [value2], ...).Tell your friends about this post