INDEX/MATCH vs VLOOKUP: When and Why to Switch
VLOOKUP is often the first lookup function people learn, but it has hard limits that bite in real workbooks. INDEX/MATCH does everything VLOOKUP does plus several things VLOOKUP cannot, at similar speed. Knowing exactly where the line sits saves you from restructuring sheets later.
What you need
- A spreadsheet in Excel, Google Sheets, or LibreOffice Calc
- A data table with a unique key column (ID, SKU, email)
- At least one column to the right of the key you want to return
- Basic comfort writing formulas
Step by step
- Write the baseline VLOOKUP on a test cell:
=VLOOKUP(A2, Data!A:F, 3, FALSE). Note that it findsA2in the first column of the range and returns the third column. - Break it deliberately: move a new column into position two of the source table. The formula now returns wrong values because column index 3 shifted. This is the fragility you are escaping.
- Rebuild the same lookup as INDEX/MATCH:
=INDEX(Data!C:C, MATCH(A2, Data!A:A, 0)). MATCH finds the row, INDEX returns the value from column C. Inserting columns between A and C changes nothing. - Look leftward. Change the INDEX range to
Data!A:Awhile matching onData!D:Dand confirm it returns values from a column left of the key. VLOOKUP cannot do this without array tricks. - Test approximate matching if you use banding tables (tax brackets, shipping tiers). VLOOKUP with TRUE requires ascending sort of the key column. The safer equivalent is
=INDEX(bands, MATCH(x, thresholds, 1)), which has identical sort requirements but keeps the threshold column separate from the result column. - Handle misses identically in both: wrap in IFERROR, e.g.
=IFERROR(INDEX(...,MATCH(...)), "not found"), so blanks do not cascade through dependent formulas. - Benchmark on a large sheet. On 100k+ rows both are fast when ranges are bounded; unbounded whole-column references are the usual slowdown, so cap ranges regardless of function choice.
- Decide your default: use XLOOKUP where available (see [[xlookup-migration-guide]]), otherwise INDEX/MATCH for anything maintained by other people, and reserve VLOOKUP for quick one-off checks.
Common mistakes
- Forgetting the fourth argument
FALSEin VLOOKUP, which silently switches to approximate match - Using whole-column references inside MATCH on very large files, slowing every recalculation
- Matching on non-unique keys, where both functions return only the first hit with no warning
Related guides
Once the lookup works, protect the source range so colleagues cannot reorder it, following [[protect-sheet-allow-cell-edits]]. To visualize lookup results across categories, pair them with a chart built using [[chart-design-rules]].