=CHOOSE(B2,"Low","Medium","High") returns the value in the position given by B2: Low for 1, Medium for 2, High for 3. The first argument is the index, and everything after it is the list to pick from.
| A | B | C | |
|---|---|---|---|
| 1 | Task | Priority | Label |
| 2 | Fix login | 3 | High |
| 3 | Update docs | 1 | Low |
| 4 | Review PR | 2 | Medium |
| 5 | Clean inbox | 1 | Low |
| 6 | Ship release | 3 | High |
Change a priority to 2 and its label changes to Medium. A priority of 4 gives #VALUE!, because the list has only three values; so does 0.
CHOOSE syntax
=CHOOSE(index_num, value1, [value2], ...)
index_num: a number from 1 to the number of values (up to 254). A decimal is cut down to a whole number, so 2.9 picks value 2.value1, value2, ...: what to return. Numbers, text, cell references, formulas or whole ranges.
Weekday names from a date
WEEKDAY returns a number from 1 (Sunday) to 7 (Saturday), which is exactly the index CHOOSE expects.
| A | B | |
|---|---|---|
| 1 | Date | Day |
| 2 | 2026-03-02 | Mon |
| 3 | 2026-03-06 | Fri |
| 4 | 2026-03-07 | Sat |
| 5 | 2026-03-11 | Wed |
| 6 | 2026-03-15 | Sun |
2026-03-02 is a Monday, so B2 shows Mon. Edit a date and the name follows. =TEXT(A2,"ddd") gives the same short names without a list (the weekday page covers it). CHOOSE is the choice when you want your own labels, such as "Weekday" and "Weekend", or a week that starts on another day.
CHOOSE instead of a nested IF
When the condition is a position number, CHOOSE replaces a chain of IFs. Both formulas below return the growth rate for the scenario number in B1.
| A | B | |
|---|---|---|
| 1 | Scenario (1 to 3) | 2 |
| 2 | Growth (CHOOSE) | 5% |
| 3 | Growth (nested IF) | 5% |
| 4 | ||
| 5 | Sales this year | 120,000 |
| 6 | Sales next year | 126,000 |
Scenario 2 gives 5% and next year's sales of 126,000. Pick 3 in B1 for 8%. The CHOOSE version stays one level deep however many scenarios you add; the IF version gains a level for each one. When the condition is a text label, use SWITCH; for bands of values such as 0 to 999, use a lookup table.
Choose a whole range
The values can be ranges, so CHOOSE can decide which column a SUM or AVERAGE reads. With January to March sales in B2:B5, C2:C5 and D2:D5 and a month number in F2:
=SUM(CHOOSE(F2, B2:B5, C2:C5, D2:D5))
With 3 in F2 this totals D2:D5, the March column. For more than a few columns, listing every range gets long, and INDEX does the same with one range: =SUM(INDEX(B2:D5,0,F2)), where the 0 means "every row" (the INDEX page explains it). CHOOSE stays useful when the ranges are not next to each other, or sit on different sheets.
CHOOSECOLS and CHOOSEROWS
Microsoft 365 and Excel 2024 add two functions that pick whole columns or rows out of a range by number and spill the result. Negative numbers count from the end.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Product | Stock | |
| 2 | Apple | Fruit | $1.20 | 40 | Apple | 40 | |
| 3 | Pear | Fruit | $1.50 | 25 | Pear | 25 | |
| 4 | Carrot | Vegetable | $0.80 | 60 | Carrot | 60 | |
| 5 | Bread | Bakery | $2.40 | 15 | Bread | 15 | |
| 6 | Milk | Dairy | $1.10 | 30 | Milk | 30 |
F1 spills the Product and Stock columns, headers included. The numbers can come in any order: =CHOOSECOLS(A1:D6,4,1) puts Stock before Product. =CHOOSEROWS(A1:D6,1,-1) returns the header row and the last row.
Practice: shipping cost by method
| A | B | C | |
|---|---|---|---|
| 1 | Order | Method | Cost |
| 2 | 1001 | 2 |
Your turn: Method 1 costs 5, method 2 costs 9 and method 3 costs 15. In C2, use CHOOSE to return the cost of the method number in B2.
Frequently Asked Questions
What does CHOOSE do in Excel?
It returns one of a list of values based on a number: =CHOOSE(2,"Red","Green","Blue") returns Green. The first argument picks the position, and the values after it can be numbers, text, cell references or ranges.
Why does CHOOSE return #VALUE!?
The index is less than 1 or larger than the number of values. =CHOOSE(4,"Red","Green","Blue") has only three values to pick from. A decimal index is cut down to a whole number, so 2.7 picks the second value.
When should I use CHOOSE instead of IF?
When the condition is a position number such as 1, 2, 3. =CHOOSE(B2,5,9,15) is shorter and easier to read than =IF(B2=1,5,IF(B2=2,9,15)). For conditions that are not numbers in sequence, use IFS, SWITCH or a lookup table.
What is CHOOSECOLS in Excel?
A newer function that returns chosen columns of a range: =CHOOSECOLS(A1:D5,1,4) returns the first and fourth columns. CHOOSEROWS does the same with rows, and negative numbers count from the end. Both need Microsoft 365 or Excel 2024.