Beginner 8 min read

INDEX MATCH for Beginners in Google Sheets

Learn INDEX MATCH in Google Sheets with this beginner tutorial. Step-by-step guide covering MATCH positions, INDEX returns, and combining both functions.

SB

Sheets Bootcamp

March 12, 2026

INDEX MATCH in Google Sheets combines two functions to look up values from any column in your data. MATCH finds the row position of the value you are searching for, and INDEX returns the data at that position from a different column. This tutorial walks through each function separately, then shows how to combine them into a single lookup formula.

In This Guide

What Is INDEX MATCH?

INDEX MATCH is a two-function lookup pattern. MATCH answers “which row is this value in?” and INDEX answers “what value is in that row?” Neither function does a full lookup on its own, but together they form a flexible alternative to VLOOKUP.

The key advantage: INDEX MATCH can return values from any column, including columns to the left of your search column. VLOOKUP can only return values to the right. INDEX MATCH also does not break when you insert or delete columns, because each function references its own specific range.

How MATCH Works

MATCH searches for a value in a single column (or row) and returns its position as a number.

Formula
=MATCH(search_key, range, match_type)
ParameterDescriptionRequired
search_keyThe value to search forYes
rangeA single column or row to search withinYes
match_type0 for exact match, 1 for less than or equal, -1 for greater than or equal. Defaults to 1No

Using the product inventory data, find the position of SKU-103:

Formula
=MATCH("SKU-103", A2:A9, 0)

This returns 3 because SKU-103 is the 3rd value in the range A2:A9. Position 1 is A2 (SKU-101), position 2 is A3 (SKU-102), and position 3 is A4 (SKU-103).

MATCH formula returning 3 for SKU-103 in the product inventory

Important

Always set match_type to 0 for exact matching. The default is 1, which assumes your data is sorted in ascending order and returns approximate matches. On unsorted data, 1 returns wrong results without any error.

MATCH returns a position within the range, not the sheet row number. If your range starts at A2, position 1 corresponds to row 2, position 2 to row 3, and so on.

How INDEX Works

INDEX returns a value from a range based on a row number (and optionally a column number).

Formula
=INDEX(range, row_number, [column_number])
ParameterDescriptionRequired
rangeThe range to pull a value fromYes
row_numberWhich row within the range (1 = first row)Yes
column_numberWhich column within the range (1 = first column). Defaults to 1 for single-column rangesNo

To get the 3rd price from the Price column:

Formula
=INDEX(D2:D9, 3)

This returns $35.00 — the 3rd value in D2:D9, which is cell D4 (the Remembrall’s price).

INDEX formula returning $35.00 from the Price column

Note

INDEX counts rows starting at 1 within the range you provide. If your range is D2:D9, row 1 is D2, row 2 is D3, row 3 is D4. The numbering is relative to the range, not the sheet.

Combining INDEX and MATCH: Step-by-Step

Now we connect the two functions. MATCH finds the row position, and INDEX uses that position to return a value. The combined formula looks like this:

Formula
=INDEX(return_range, MATCH(search_key, lookup_range, 0))

We’ll build this step by step using a product inventory table. The goal: look up a Product ID and return its price.

Sample Data

The inventory has Product IDs in column A and Prices in column D, with data in rows 2 through 9 (8 products).

Product inventory table with Product ID, Name, Category, Price, Stock, and Supplier columns

1

Set up your data

You need a table with at least two columns — one to search in (Product ID) and one to return values from (Price). The product inventory has Product IDs in column A and Prices in column D.

2

Write the MATCH formula

First, find the position of the Product ID you want. Select an empty cell and enter:

Formula
=MATCH("SKU-103", A2:A9, 0)

This returns 3 because SKU-103 is the 3rd entry in A2:A9. The 0 means exact match.

MATCH formula in a cell returning 3 with formula bar visible

3

Write the INDEX formula

Use the position from MATCH to pull the price. In another cell, enter:

Formula
=INDEX(D2:D9, 3)

This returns $35.00 — the value at position 3 in the Price column.

INDEX formula returning $35.00 with formula bar visible

4

Combine INDEX and MATCH

Replace the hardcoded 3 with the MATCH function:

Formula
=INDEX(D2:D9, MATCH("SKU-103", A2:A9, 0))

The formula returns $35.00. MATCH finds the position (3), and INDEX pulls the value at that position from the Price column.

Combined INDEX MATCH formula returning $35.00 with formula bar showing the full formula

5

Make it dynamic with a cell reference

Replace the hardcoded search key with a cell reference:

Formula
=INDEX(D2:D9, MATCH(H2, A2:A9, 0))

Type any Product ID in cell H2. Enter SKU-108 and the formula returns $89.99 (the Invisibility Cloak). Change H2 to SKU-106 and the result updates to $19.99 (Extendable Ears).

Dynamic INDEX MATCH using cell H2 as the search key, returning $89.99

Tip

When copying INDEX MATCH formulas down a column, lock the ranges with absolute references: =INDEX($D$2:$D$9, MATCH(H2, $A$2:$A$9, 0)). The search key reference (H2) stays relative so it shifts per row.

Make INDEX MATCH Dynamic

The dynamic version of INDEX MATCH reads the search key from a cell instead of the formula itself. This is how the formula is used in real spreadsheets.

Formula
=INDEX(D2:D9, MATCH(H2, A2:A9, 0))

With this pattern, you can:

  • Change one cell to update the result — type a different Product ID in H2 and the price updates automatically
  • Copy the formula down — if H2:H10 contains different product IDs, copy the formula from I2 to I10 and each row returns its own price
  • Build dashboards — combine cell references with data validation dropdowns to let users pick a product from a list

Why INDEX MATCH Instead of VLOOKUP?

If you are new to lookups, you might wonder why INDEX MATCH exists when VLOOKUP does the same thing in a single function. The short answer: INDEX MATCH is more flexible.

VLOOKUP searches the leftmost column only. If you need to return a value from a column to the left of your search column, VLOOKUP cannot do it. INDEX MATCH can, because you set each range independently.

VLOOKUP breaks when columns move. VLOOKUP uses a column index number (e.g., 4 for the 4th column). If someone inserts a column in the middle of your range, that number now points to the wrong column. INDEX MATCH references the return column directly (D2:D9), so column changes do not affect it.

For a full comparison with benchmarks and migration examples, see INDEX MATCH vs VLOOKUP.

Common Mistakes Beginners Make

Mismatched range sizes

The lookup range and return range must have the same number of rows. If MATCH searches A2:A9 (8 rows) but INDEX references D2:D5 (4 rows), a match at position 5 or higher causes a #REF! error.

Fix: Make both ranges the same length. A2:A9 and D2:D9 both cover 8 rows.

Forgetting the 0 in MATCH

MATCH defaults to approximate matching (match_type 1) if you leave out the third argument. On unsorted data, approximate matching returns wrong positions silently.

Warning

MATCH with match_type 1 (the default) requires sorted data. On unsorted data, it returns incorrect positions without any error message. Always include 0 for exact matching.

Searching a multi-column range with MATCH

MATCH works on a single column or a single row. Passing a multi-column range like A2:B9 causes a #VALUE! error.

Fix: Narrow the range to one column: A2:A9.

Including headers in the data range

If you include the header row in MATCH’s range (A1:A9 instead of A2:A9), the header takes position 1 and shifts every position by one. This can cause INDEX to return the wrong row.

Fix: Start both ranges at the first data row (row 2), not the header row.

Tips for Beginners

  1. Always use 0 as the third argument in MATCH. This ensures exact matching. The default (1) assumes sorted data and returns approximate matches, which produces wrong results on typical data.

  2. Lock your ranges with dollar signs. When copying the formula to multiple rows, use $A$2:$A$9 and $D$2:$D$9 so the ranges stay fixed. Leave the search key reference (H2) relative.

  3. Wrap in IFERROR for clean output. =IFERROR(INDEX(D2:D9, MATCH(H2, A2:A9, 0)), "Not found") shows “Not found” instead of #N/A when the lookup value does not exist.

  4. Start with MATCH alone. Before writing the full INDEX MATCH formula, test MATCH by itself to confirm it returns the correct position. This makes debugging easier.

  5. Think of it as two questions. MATCH asks “where is it?” INDEX asks “what’s there?” Keeping the two questions separate in your head makes the formula intuitive.

Frequently Asked Questions

What does INDEX MATCH do in Google Sheets?

INDEX MATCH looks up a value by combining two functions. MATCH finds the row position of your search key in one column, and INDEX returns the value at that position from a different column. Together they create a flexible lookup.

Is INDEX MATCH harder than VLOOKUP?

INDEX MATCH uses two functions instead of one, so it takes a bit more time to learn. But the pattern is always the same: MATCH finds the row, INDEX pulls the value. Once you see the pattern, it becomes routine.

Do I need to press Ctrl+Shift+Enter for INDEX MATCH?

No. A standard INDEX MATCH formula works with a regular Enter press. Ctrl+Shift+Enter is only needed for advanced array formulas like multiple criteria lookups.

Can INDEX MATCH look left in Google Sheets?

Yes. Unlike VLOOKUP, INDEX MATCH can return values from any column, including columns to the left of your search column. Set the INDEX range to the left column and the MATCH range to the right column.

Why does my INDEX MATCH return #N/A?

The #N/A error means MATCH could not find your search key. Check for typos, extra spaces, and mismatched data types. Also confirm the third argument in MATCH is 0 for exact matching.

Frequently Asked Questions

Next Steps

Continue learning with these related tutorials: