When the answer sits at the intersection of a row and a column — a price grid, a rate table, a schedule — INDEX with two MATCH functions finds it in one formula.
No helper columns, and it works in every version of Excel.
The example
A price grid by product (rows) and region (columns). We want the Widget price in the West.
| A | B | C | |
|---|---|---|---|
| 1 | Product | East | West |
| 2 | Widget | $10 | $12 |
| 3 | Gadget | $15 | $14 |
The formula
The inner MATCHes return the row and column positions; INDEX returns the cell where they cross:
How it works
Breaking it down:
MATCH("Widget",A2:A3,0)finds Widget in the row labels and returns 1 (first row).MATCH("West",B1:C1,0)finds West in the column headers and returns 2 (second column).INDEX(B2:C3,1,2)returns the value at row 1, column 2 of the data grid — $12.- The 0 in each MATCH forces an exact match, which is what you want for labels.
Point the row and column labels at input cells so the lookup becomes a live, two-dropdown query.
Try it: interactive demo
Pick a product and a region; the price at the intersection updates.
Variations
Two-way lookup with XLOOKUP
On 365, nest XLOOKUP for a readable version.
Approximate (banded) row match
Use 1 instead of 0 in MATCH for a sorted-band lookup, e.g. tax brackets.
Pitfalls & errors
A typo or extra space in the label gives #N/A. The labels must match the headers exactly with exact-match MATCH.
Keep the INDEX data range aligned with the header ranges — if they drift apart, the position numbers point to the wrong cell.
Practice workbook
Frequently asked questions
Why not just use VLOOKUP?
Does the data have to be sorted?
Can I use dropdowns for the labels?
Stop fighting formulas. Learn them in a day.
This recipe is one of hundreds of real-world formulas we teach. Our Excel Formulas & Functions class covers lookups, logic, text, and dynamic arrays hands-on — live in Dallas–Fort Worth, Houston, Austin, Oklahoma City, Denver, or online.
See the Formulas & Functions Class