How to Use Excel INDEX MATCH: Build Lookup Formulas That Don’t Break

How to Use Excel INDEX MATCH Properly: A Complete Practical Guide

To use Excel INDEX MATCH effectively, you need to build a reliable structure (tables, references, and exact matches) before memorizing the syntax. VLOOKUP is convenient, but if you have experienced reports breaking after inserting or deleting a column, the INDEX+MATCH combination is much more reliable.

Quick Fix: Get Your First Excel INDEX MATCH Result in 3 Minutes

  1. Choose the column to return (result range) first.
  2. Identify the value to find (key).
  3. Use MATCH to find its position: =MATCH(lookup_value, key_range, 0)
  4. Use INDEX to return the value at that position: =INDEX(return_range, MATCH(lookup_value, key_range, 0))

Why INDEX MATCH Is Less Likely to Break in Real-World Workbooks

  • Unlike VLOOKUP, you do not need to count column numbers, making it safer when columns are inserted or deleted.
  • It supports left-side lookups.
  • It handles two-way (row and column) lookups cleanly.
  • It is easy to extend to advanced lookups, such as multiple criteria and latest-value lookups.

Prepare the Practical Example: Sample Data

PriceList (Master)

ItemCodeItemNameCategoryPrice
T001T-shirtBasic19000
T002PoloPlus25000
B014PantsBasic35000
O010JacketPro159000
S201ShoesPro140000

Orders

OrderIDItemCodeQty
O-1001T0023
O-1002S2011
O-1003T0012

Recommended setup: Select the range → Insert > Table → select “My table has headers” → name the tables PriceList and Orders.

Practical Example 1: Look Up Prices with an Exact Match (0)

Retrieve Price from PriceList using the ItemCode in Orders:

=INDEX(PriceList[Price], MATCH([@ItemCode], PriceList[ItemCode], 0))

Amount:

=[@Qty] * [@UnitPrice]

Practical Example 3: Two-Way (Row and Column) Lookup

Find the row key (ItemCode) and column key (month header) with separate MATCH functions, then pass them to INDEX.

=INDEX(MonthlySales,
  MATCH(B2, MonthlySales[ItemCode], 0),
  MATCH(C2, MonthlySales[#Headers], 0)
)

Practical Example 4: Multiple-Criteria Lookup

=INDEX(Sales[Price],
  MATCH(1, (Sales[Branch]=E2)*(Sales[ItemCode]=F2), 0)
)

Troubleshooting

SymptomLikely CauseSolution
#N/AThe key does not exist, or spaces/data types do not matchUse TRIM/CLEAN, standardize numbers and text, and verify that the key exists.
Incorrect value (approximate match)MATCH uses 1/-1, but the data is not sortedCheck the sorting requirement and use 0 whenever possible.
#VALUE!Array formula entry or compatibility issueIn older versions, check whether Ctrl+Shift+Enter is required.

Related Articles (Internal Links)

External References (Official Documentation)

Leave a Reply

Your email address will not be published. Required fields are marked *