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.
Syntax
Arguments
| Argument | Description | |
|---|---|---|
return_range | required | The column you want a value returned from. |
lookup_value | required | The value MATCH searches for. |
lookup_range | required | The column MATCH searches through for the lookup value. |
match_type | optional | 0 for an exact match (embedded as the third argument of MATCH); 1 or -1 for approximate. |
Related functions
Decide the return_range — the column you want the answer from — and start with =INDEX(that range,.
Inside INDEX, open MATCH( and click the cell holding the value to find.
Select the column to search through as the second MATCH argument.
Type 0 as the third MATCH argument to force an exact match, then close both brackets.
Press Enter and fill the formula down; lock ranges with $ if you will copy it.
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. A practical tip before you scale it up: build it once on a small block of test data, confirm the number against the tool on this page, and only then point it at your real sheet. That one habit catches almost every mistake while it is still cheap to fix, long before a wrong figure reaches a report or a colleague.
In Google Sheets
If you are in Google Sheets rather than Excel, the good news is that the formula shown here is identical and the workflow barely changes — menus sit across the top instead of in a ribbon, and a few function names differ slightly, but anything you build here moves across with little or no rework. Nothing on this page is behind a login: the tool runs entirely in your browser, the formula is shown in full with one-click copy, and the steps work the same on Windows and Mac. That is the whole promise here — the exact answer, a way to prove it on your own numbers, and just enough context to make it stick. If you take one thing from this page on “index match multiple columns”, make it the habit rather than the keystrokes: set the problem up with labelled inputs, reference those cells, and let Excel do the recomputing. Bookmark the page for the syntax, but do the example once in a blank sheet and check it against the tool above — five minutes of hands-on practice fixes the method in memory far better than re-reading, and it surfaces the small snags while they are still harmless. After that the technique is genuinely yours: faster than searching for it again, and reliable enough to drop into work that other people depend on.
Common mistakes
- Giving
INDEXandMATCHranges of different heights, so the row number fromMATCHpoints 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
INDEXinstead 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.