Function: CHOOSE()
🧭 Purpose:
The CHOOSE() function returns a value from a list based on a given position number called index_num.
Think of it as selecting an item from a menu by its number.
It’s useful for picking values dynamically, such as month names, GST rates, or transport costs.
🧮 Syntax:
=CHOOSE(index_num, value1, value2, value3, ...)
| Parameter | Description |
|---|---|
| index_num | The position number of the value to return. |
| value1, value2, value3, … | The list of items from which Excel will pick one. |
Where we can use
CHOOSE() is useful when you need:
-
Custom categories without nested IF.
-
Switch-like logic → better alternative to multiple IF statements.
-
Dynamic headings & labels in dashboards.
-
Convert numbers to text (1 = “Low”, 2 = “Medium”, 3 = “High”).
-
Create dynamic reports—switch months, switch sheets, switch tables.
-
Combine with MATCH() → powerful custom lookup.
It can return:
- Text
- Numbers
- Formulas
- Ranges
- Arrays
- Cell references
🧑🎓 Example 1: Month Name from Number
| Month No (A2) | Formula | Result |
|---|---|---|
| 4 | =CHOOSE(A2, "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") |
Apr |
Examples:
Example 1
Pick a day from a list based on a number.
| A (Number) | B (Formula) | C (Result) |
|---|---|---|
| 3 | =CHOOSE(A2,"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday") |
Wednesday |
Example 2
Convert rating numbers into text labels.
| A (Rating) | B (Meaning) |
|---|---|
| 1 | =CHOOSE(A2,”Poor”,”Average”,”Good”,”Very Good”,”Excellent”) |
| 4 | =CHOOSE(A3,”Poor”,”Average”,”Good”,”Very Good”,”Excellent”) |
| 5 | =CHOOSE(A4,”Poor”,”Average”,”Good”,”Very Good”,”Excellent”) |
Example 3 (Dashboard Headline Switcher)
User selects a number and the dashboard heading changes dynamically.
| A | B |
|---|---|
| User Input | 2 |
| Heading | =CHOOSE(A2,”Sales Report”,”Expense Report”,”Profit Report”,”Growth Insights”) |
Output → Expense Report
Example 4 (Icon Output using CHOOSE)
Use Wingdings / Emoji Icons (Excel supports icons via conditional formatting or by manually inserting characters).
| Score | Icon Formula | Icon |
|---|---|---|
| 1 | =CHOOSE(A2,"●","●●","●●●","●●●●","●●●●●") |
● |
| 5 | =CHOOSE(A3,"●","●●","●●●","●●●●","●●●●●") |
●●●●● |
Can be used for:
-
Rating charts
-
Employee performance
-
Quality indicators
3. Projects
Project 1 — Beginner: Movie Rating Label Generator
Goal
Convert numbers into rating labels and icons using CHOOSE()
Table
| Movie | Rating (1–5) | Label | Icon |
|---|---|---|---|
| KGF | 5 | =CHOOSE(B2,”Bad”,”Below Avg”,”Average”,”Good”,”Excellent”) | =CHOOSE(B2,”★”,”★★”,”★★★”,”★★★★”,”★★★★★”) |
| Pushpa | 3 | … | … |
| Kantara | 4 | … | … |
Student Task
-
Complete formulas for all rows
-
Add Conditional Formatting icons to match scores (optional)
Project 2 — Intermediate: Expense Type Categorizer
Goal
Use CHOOSE() to assign categories based on numeric codes.
Table
| Code | Transaction | Category |
|---|---|---|
| 1 | Milk | =CHOOSE(A2,”Grocery”,”Transport”,”Food”,”Entertainment”) |
| 3 | Lunch | … |
| 2 | Bus Fare | … |
Categories:
1 = Grocery
2 = Transport
3 = Food
4 = Entertainment
Student Tasks
-
Fill missing formulas
-
Add a summary table using COUNTIF
-
Add icons for spending priority
-
Grocery = Blue Circle
-
Transport = Yellow Triangle
-
Food = Green Square
-
Entertainment = Red Diamond
-
Project 3 — Advanced: Multi-Month Dynamic Sales Switcher
Goal
Use CHOOSE() to dynamically switch between full monthly datasets.
Data Tables
January
| Product | Amount |
|---|---|
| Pen | 400 |
| Book | 1200 |
| Bag | 2000 |
February
| Product | Amount |
|---|---|
| Pen | 450 |
| Book | 1250 |
| Bag | 2200 |
March
| Product | Amount |
|---|---|
| Pen | 430 |
| Book | 1100 |
| Bag | 2400 |
User Input Cell
| A | B |
|---|---|
| Select Month | 2 |
Output Area (Dynamic Table)
Use formulas:
Product List
=CHOOSE($B$1, A2:A4, D2:D4, G2:G4)
Sales Amount
=CHOOSE($B$1, B2:B4, E2:E4, H2:H4)
Student Tasks
-
Create a 3-month switcher using CHOOSE()
-
Build a dropdown (Jan–Mar) mapped to numbers 1–3
-
Create a dashboard showing totals, best product, worst product
-
Add icons:
-
Green Up Arrow for growth
-
Red Down Arrow for decline
-
-
Add a chart that updates automatically (optional but recommended)
Use CHOOSE With Other Functions
| Combination | Use Case |
|---|---|
| CHOOSE + VLOOKUP | Reverse columns, virtual tables |
| CHOOSE + INDEX | Dynamic column selection |
| CHOOSE + MATCH | Multi-column switch lookup |
| CHOOSE + IF | Categorization, icons |
| CHOOSE + Nested Arrays | Dashboard switchers |
1. CHOOSE() + VLOOKUP()
Purpose:
Use CHOOSE() to reorder columns so VLOOKUP can work even when the lookup value is not in the first column.
Example Table
| Product | Category | Price | Stock |
|---|---|---|---|
| Pen | Stationery | 10 | 200 |
| Bag | Travel | 500 | 80 |
| Book | Education | 200 | 150 |
| Bottle | Utility | 150 | 60 |
| Keyboard | Electronics | 900 | 20 |
Goal: VLOOKUP for Price even though “Product” is column 1 and “Price” is column 3.
Formula
=VLOOKUP("Book", CHOOSE({1,2}, A2:A6, C2:C6), 2, FALSE)
Output → 200
Explanation:
CHOOSE({1,2}, A2:A6, C2:C6) creates a virtual table:
| Product | Price |
|---|---|
| Pen | 10 |
| Bag | 500 |
| Book | 200 |
| Bottle | 150 |
| Keyboard | 900 |
Now VLOOKUP works normally.
2. CHOOSE() + INDEX()
Purpose:
Dynamically change which column INDEX pulls data from.
Example Table
| ID | Name | Department | Salary |
|---|---|---|---|
| 101 | Arjun | HR | 25000 |
| 102 | Priya | Accounts | 30000 |
| 103 | Sameer | IT | 45000 |
| 104 | Riya | Marketing | 28000 |
| 105 | Kunal | IT | 49000 |
Goal: Select which column INDEX should return using CHOOSE().
Formula: Return Department
=INDEX(CHOOSE(2, A2:A6, B2:B6, C2:C6, D2:D6), 3)
Output → Priya (Row 2, Column “Name”)
Formula: Return Salary
=INDEX(CHOOSE(4, A2:A6, B2:B6, C2:C6, D2:D6), 3)
Output → 45000
Explanation:
CHOOSE allows selecting the column dynamically.
3. CHOOSE() + MATCH()
Purpose:
Create a flexible lookup that switches which column to search.
Example Table
| Product | Jan Sale | Feb Sale | Mar Sale |
|---|---|---|---|
| Pen | 400 | 450 | 430 |
| Book | 1200 | 1250 | 1100 |
| Bag | 2000 | 2200 | 2400 |
| Bottle | 500 | 550 | 600 |
| Shoes | 1500 | 1600 | 1700 |
User input: Month = 2 (February)
Goal: Find Feb sale for “Bag”.
Formula
=INDEX(CHOOSE(2, B2:B6, C2:C6, D2:D6), MATCH("Bag", A2:A6, 0))
Output → 2200
Explanation:
MATCH finds the row → CHOOSE selects the correct month column.
4. CHOOSE() + Nested Logic (IF + CHOOSE)
Purpose:
Convert performance score into text + icon using CHOOSE.
Example Table
| Employee | Score | Status | Icon |
|---|---|---|---|
| Arjun | 1 | ? | ? |
| Priya | 3 | ? | ? |
| Vikas | 5 | ? | ? |
| Riya | 4 | ? | ? |
| Kunal | 2 | ? | ? |
Status Formula
=CHOOSE(B2, "Poor", "Below Avg", "Average", "Good", "Excellent")
Icon Formula
=CHOOSE(B2, "●", "●●", "●●●", "●●●●", "●●●●●")
5. CHOOSE() as a Complete Dynamic Switcher (Combined)
Example Table (4 columns × 5 rows)
| Region | Q1 | Q2 | Q3 |
|---|---|---|---|
| East | 120000 | 140000 | 150000 |
| West | 100000 | 110000 | 120000 |
| North | 90000 | 105000 | 130000 |
| South | 110000 | 118000 | 125000 |
| Central | 95000 | 99000 | 115000 |
User selects quarter:
-
1 = Q1
-
2 = Q2
-
3 = Q3
Formula to return correct quarter sales
=INDEX(CHOOSE(A1, B2:B6, C2:C6, D2:D6), MATCH("North", A2:A6,0))
If A1 = 3 → Output = 130000