INDEX MATCH Multiple Columns

If you just need to index match multiple columns and move on, the boxed answer at the top is all you need. The rest of this page is for when you want to understand why it works in Excel, adapt it to a trickier version, or make it robust enough to hand to a colleague. We keep the opening short on purpose — the depth is here when you want it, not in your way when you don’t.

Exact answer

In Excel: use =INDEX(return_range, MATCH(lookup_value, lookup_range, 0)) — MATCH finds the row number of the lookup value and INDEX returns the value in that row from any column, left or right.

On this page8

Syntax

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

Arguments

Argumentrequired / optionalDescription
return_rangerequiredThe column you want a value returned from.
lookup_valuerequiredThe value MATCH searches for.
lookup_rangerequiredThe column MATCH searches through for the lookup value.
match_typeoptional0 for an exact match (embedded as the third argument of MATCH); 1 or -1 for approximate.

Related functions

VLOOKUPXLOOKUPHLOOKUP
▤Annotated stepsExcel
1

Decide the return_range — the column you want the answer from — and start with =INDEX(that range,.

2

Inside INDEX, open MATCH( and click the cell holding the value to find.

3

Select the column to search through as the second MATCH argument.

4

Type 0 as the third MATCH argument to force an exact match, then close both brackets.

5

Press Enter and fill the formula down; lock ranges with $ if you will copy it.

Ctrl+CthenCtrl+Shift+V⌘+Cthen⌘+Ctrl+VPaste values · WindowsMac

What this does

INDEX/MATCH pairs two functions to do a lookup that VLOOKUP cannot: MATCH returns the position of the lookup value within a column, and INDEX returns the cell at that position in whatever column you choose. Because the search column and the return column are independent, it can look to the left and it survives inserted or moved columns that would break a VLOOKUP col_index_num. Keep the inputs visible and clearly labelled and the whole thing stays auditable — anyone who opens the file later, including you, can see at a glance exactly what feeds the result and change one assumption without hunting through the formula. For “index match multiple columns”, the reliable version is a short checking loop, not just the first command that appears to work. Run it on a deliberately small range first, watch how the affected columns change, and only then apply the same setup to the full sheet. When a formula is involved, keep the inputs labelled beside it, reference cells instead of typing values, and apply number formatting only after the result checks out. That is what makes a data step that keeps your analysis trustworthy useful in real work: repeatable, auditable, and not dependent on memory or luck.

A worked example

Names are in column C (C2:C100) and IDs in column A (A2:A100). To return the ID for the name in E2 — a value to the LEFT, which VLOOKUP cannot do: =INDEX(A2:A100, MATCH(E2, C2:C100, 0)). MATCH finds "Maria" in row 7 of the range and INDEX returns the ID in A8, for example 1042. INDEX/MATCH is the durable lookup professionals reach for when data is wide or volatile: it looks in any direction and does not break when columns shift. Check the referenced cells, argument order and result type in your workbook. Start with the worked example before changing an input, then compare the changed result with the calculation you expected. An error value or a result of a different type is a reason to inspect the inputs and arguments.

In Google Sheets

The standard worksheet functions used by this example are listed in Google Sheets. Check the cell references, argument separators and input types in the target spreadsheet, then compare the worked result. This formula-availability check does not establish identical menus, keyboard shortcuts or workbook features, and it is not a product execution test. Nothing on this page is behind a login or a download: the exact answer is at the top, and the detail below it is there for when you need it. That is the whole promise here — the answer first, and just enough context to make it stick. For “index match multiple columns”, keep the input cells and the result visible while you check the formula in Excel. Follow the worked example and change one input at a time. The steps explain the workbook calculation; this page does not run a live calculator for that task.

Common mistakes

  • Giving INDEX and MATCH ranges of different heights, so the row number from MATCH points at the wrong cell.
  • Forgetting the 0 in MATCH, which switches it to an approximate match and can return a wrong row.
  • Selecting the whole table for INDEX instead of a single return column, which forces a needless extra column-number argument.

Frequently asked questions

Why use INDEX/MATCH instead of VLOOKUP?

INDEX/MATCH can return columns to the left of the lookup column, and it keeps working when you insert or move columns because it references columns directly rather than by a counted index number.

What does the 0 in MATCH mean?

It requests an exact match. Without it, or with 1, MATCH does an approximate match that needs sorted data and can silently return the wrong position, so include 0 for normal lookups.

Is INDEX/MATCH faster than VLOOKUP?

On large sheets it can be, because it only scans the lookup column and the return column rather than the whole table array, though XLOOKUP is simpler still if your Excel version supports it.

What if I need to look up both a row and a column?

That is a two-way lookup: add a second MATCH for the column header and pass both positions to INDEX. The related INDEX MATCH MATCH guide works through a product-by-month matrix; multiple criteria on one row are a separate task.