How do you use the INDEX-MATCH combination instead of VLOOKUP?

In Microsoft Excel, the INDEX-MATCH combination is a powerful alternative to VLOOKUP for looking up data. It’s more flexible because it doesn’t rely on a fixed column position and can search in any direction (left, right, or even across sheets). Here’s how to use it, step-by-step:

Why Use INDEX-MATCH Over VLOOKUP?
  • VLOOKUP limitations: It only looks right of the lookup column, requires the lookup column to be leftmost, and breaks if columns are rearranged.
  • INDEX-MATCH advantages: It can look anywhere, handles dynamic ranges, and is less fragile when your data structure changes.
How It Works :
  • INDEX: Returns the value at a specific row and column in a range.
  • MATCH: Finds the position (row or column number) of a lookup value in a range.
  • Together, MATCH pinpoints the position, and INDEX grabs the value at that spot.
Syntax :
    • INDEX: =INDEX(range, row_number, [column_number])
      • range: Where to pull the value from.
      • row_number: Which row in the range (from MATCH).
      • [column_number]: Which column (optional; defaults to 1 if omitted).

  • MATCH: =MATCH(lookup_value, lookup_range, [match_type])
    • lookup_value: What you’re searching for.
    • lookup_range: Where to search.
    • [match_type]: 0 for exact match (most common), 1 for less than, -1 for greater than.

Combined : =INDEX(return_range, MATCH(lookup_value, lookup_range, 0))

Step-by-Step Example :

Imagine this table in A1:B5:

Product Price
Apple 0.50
Banana 0.30
Orange 0.75
Grape 1.00

You want to find the price of "Orange" and put it in cell D1.

  1. Set Up MATCH :
    • Goal: Find the row number where "Orange" appears in A2:A5.
    • Formula: =MATCH("Orange", A2:A5, 0)
    • Result: 3 (Orange is in row 3 of the range A2:A5).
  2. Set Up INDEX :
    • Goal: Get the value from the Price column (B2:B5) at row 3.
    • Formula: =INDEX(B2:B5, 3)
    • Result: 0.75 (the price of Orange).
  3. Combine Them :
    • Nest MATCH inside INDEX: =INDEX(B2:B5, MATCH("Orange", A2:A5, 0))
    • Enter this in D1, and it returns 0.75.
  4. Make It Dynamic :
    • If the lookup value is in C1 (e.g., "Orange"), use: =INDEX(B2:B5, MATCH(C1, A2:A5, 0)).
    • Change C1 to "Banana," and it returns 0.30.

Key Differences from VLOOKUP :
    • VLOOKUP version: =VLOOKUP("Orange", A2:B5, 2, FALSE)
      • Searches A2:A5, returns from column 2 (B), exact match.
      • Breaks if Price moves left of Product.

  • INDEX-MATCH: No column order restriction. If Price were in column A and Product in B, just swap ranges: =INDEX(A2:A5, MATCH("Orange", B2:B5, 0)).
Practical Tips :
  • Ranges Must Align: MATCH’s lookup_range and INDEX’s return_range should cover the same number of rows (e.g., A2:A5 and B2:B5).
  • Error Handling: Wrap it in IFERROR for cleaner results: =IFERROR(INDEX(B2:B5, MATCH(C1, A2:A5, 0)), "Not Found").
  • Horizontal Lookup: Flip it for rows—e.g., =INDEX(A1:E1, MATCH("Orange", A2:E2, 0)).
Real-World Scenario :

Say you’re tracking sales across sheets, and columns shift. VLOOKUP fails if "Sales" moves left of "Product ID." INDEX-MATCH doesn’t care—just point MATCH at the ID column and INDEX at the Sales column, wherever they are.