Function: INDEX()
🔍 Purpose
The INDEX() function returns a value from a specific row and column of a given range.
It is extremely powerful when used with MATCH, CHOOSE, FILTER, and dynamic dashboards.
You can use INDEX() to:
-
Pull data from a specific location
-
Build flexible lookup models
-
Create dynamic reports
-
Replace VLOOKUP/HLOOKUP in advanced models
🧮 Syntax
1. Array Form
INDEX(array, row_num, [column_num])
2. Reference Form
INDEX(reference, row_num, [column_num], [area_num])
🔧 Parameters
-
array / reference → The range from which to return the value
-
row_num → Row number inside the range
-
column_num → Column number inside the range
-
area_num → Used when selecting between multiple ranges (advanced)
📘 Explanation
Think of INDEX() as picking a cell from a box.
Example:=INDEX(A2:C6, 3, 2)
Means → From the table A2:C6, give the value at 3rd row, 2nd column.
🧩 Example 1: Basic INDEX()
Example Table
| Student ID | Name | Course | Fees (₹) |
|---|---|---|---|
| 101 | Arjun Das | Excel | 5000 |
| 102 | Priya Sen | Photoshop | 6500 |
| 103 | Kunal Roy | Web Design | 15000 |
| 104 | Sneha Paul | Tally GST | 8000 |
| 105 | Riya Ghosh | Digital Marketing | 20000 |
Task: Return the Course of the 3rd student
Formula:
=INDEX(A2:D6, 3, 3)
Output → Web Design
🧩 Example 2: INDEX() with Dynamic Column Selection
Goal: Return Fees of row 5.
=INDEX(A2:D6, 5, 4)
Output → 20000
🧩 Example 3: INDEX() + MATCH() (Advanced Lookup)
Goal: Find Fees for Priya Sen.
MATCH to find row number
=MATCH("Priya Sen", B2:B6, 0)
Result → 2
INDEX to return Fees
=INDEX(D2:D6, MATCH("Priya Sen", B2:B6, 0))
Output → 6500
🧩 Example 4: INDEX() with Multi-Area Lookup (Reference Form)
Table Set (Two Ranges)
Range 1—Course Fees
| Course | Fee (₹) |
|---|---|
| Excel | 5000 |
| Tally | 8000 |
| Photoshop | 6500 |
| Web Design | 15000 |
| Digital Marketing | 20000 |
Range 2—Course Duration
| Course | Duration (Months) |
|---|---|
| Excel | 1 |
| Tally | 2 |
| Photoshop | 1 |
| Web Design | 4 |
| Digital Marketing | 3 |
Goal: Return duration of “Web Design”.
Formula:
=INDEX((B2:B6, D2:D6), MATCH("Web Design", A2:A6, 0), 1, 2)
Output → 4
Explanation:
-
Area 1 → Fees
-
Area 2 → Duration
-
We select area 2, row = MATCH(“Web Design”), column = 1
🧩 Example 5: INDEX() for 2-Way Lookup (Row + Column)
Sales Table (4 × 5)
| Product | Jan | Feb | Mar |
|---|---|---|---|
| Pen | 400 | 450 | 430 |
| Book | 1200 | 1250 | 1100 |
| Bag | 2000 | 2200 | 2400 |
| Shoes | 1500 | 1600 | 1700 |
| Bottle | 500 | 550 | 600 |
Goal: Find February sales of Bag.
Row:=MATCH("Bag", A2:A6, 0) → 3
Column:=MATCH("Feb", B1:D1, 0) → 2
Final formula:
=INDEX(B2:D6, MATCH("Bag", A2:A6, 0), MATCH("Feb", B1:D1, 0))
Output → 2200
📚 When Should You Use INDEX()?
| Scenario | Use INDEX? |
|---|---|
| Need flexible lookup | Yes |
| Lookup to the left of criteria | Yes |
| Faster than VLOOKUP in large data | Yes |
| Build dashboards with dynamic dropdowns | Yes |
| Multi-criteria lookup | With MATCH or FILTER |
INDEX() is one of the core functions in advanced Excel.
🛠️ Student Practice Projects (INDEX-Based)
Project 1 (Easy): Employee Salary Finder
Table
| Emp ID | Name | Department | Salary (₹) |
|---|---|---|---|
| E101 | Rahul | Sales | 25000 |
| E102 | Priya | HR | 30000 |
| E103 | Kunal | IT | 45000 |
| E104 | Sneha | Accounts | 38000 |
| E105 | Arjun | Marketing | 42000 |
Task:
-
Return salary of employee in row 4 using INDEX.
-
Return salary of Kunal using INDEX + MATCH.
Project 2 (Medium): Product Price Finder
Table
| Product | Category | Price | Stock |
|---|---|---|---|
| Pen | Stationery | 10 | 200 |
| Bag | Travel | 500 | 80 |
| Bottle | Utility | 150 | 60 |
| Shoes | Fashion | 1200 | 30 |
| Keyboard | Electronics | 900 | 20 |
Tasks:
-
Find stock of Shoes.
-
Create formula to return any column using a dropdown and INDEX + MATCH.
Project 3 (Hard): Dynamic Student Report Switcher
Table
| Roll | Name | Marks | Grade |
|---|---|---|---|
| 1 | Arjun | 78 | B |
| 2 | Priya | 92 | A |
| 3 | Riya | 85 | A |
| 4 | Kunal | 60 | C |
| 5 | Sneha | 88 | A |
Tasks:
-
Create a dropdown: Name / Marks / Grade
-
Use INDEX() to return the selected data for Roll Number = 3
-
Build a 2-way lookup model with INDEX + MATCH
Project 4 (Harder): 2-Way Dashboard Lookup
Table
| City | Q1 | Q2 | Q3 |
|---|---|---|---|
| Kolkata | 450000 | 470000 | 500000 |
| Delhi | 520000 | 540000 | 590000 |
| Mumbai | 600000 | 620000 | 650000 |
| Chennai | 410000 | 430000 | 460000 |
| Bangalore | 700000 | 720000 | 750000 |
Tasks:
-
Create dropdowns for City and Quarter
-
Use INDEX + MATCH + MATCH to return sales
-
Add conditional formatting for top 3 results
Project 5 (Hardest): Multi-Area INDEX() Selection
You have two separate tables:
Table 1: Fees
| Course | Fee (₹) | Duration | Center |
| Excel | 5000 | 1 | Kolkata |
| Tally | 8000 | 2 | Delhi |
| Photoshop | 6500 | 1 | Mumbai |
| Web Design | 15000 | 4 | Chennai |
| Digital Marketing | 20000 | 3 | Bangalore |
Table 2: Batch Timings
| Course | Morning | Afternoon | Evening |
| Excel | 10 AM | 2 PM | 6 PM |
| Tally | 9 AM | 1 PM | 5 PM |
| Photoshop | 11 AM | 3 PM | 7 PM |
| Web Design | 10 AM | 4 PM | 8 PM |
| DM | 9 AM | 12 PM | 6 PM |
Tasks:
-
Use INDEX(reference) to select between Fee table and Timing table.
-
Let user choose Course, Area No (1 or 2), Column.
-
Fetch the correct value dynamically.