In Excel: use =MATCH(lookup_value, lookup_array, 0) — it returns the POSITION of a value in a row or column, not the value itself; match_type 0 forces an exact match, while the default 1 assumes ascending data and returns an approximate match.
On this page8
Syntax
Arguments
| Argument | required / optional | Description |
|---|---|---|
lookup_value | required | The value to find. |
lookup_array | required | A single row or column to search. MATCH returns a position within it, not a value. |
match_type | optional | 0 exact (use this), 1 largest value ≤ lookup_value on ascending data (the default), -1 smallest value ≥ lookup_value on descending data. |
Related functions
Type =MATCH( and click or type the value you are looking for.
Select the single row or column to search — MATCH rejects a two-dimensional range with #N/A.
Type 0 as the third argument for an exact match. Do not leave it out.
Close the bracket and press Enter; the result is a position number, counted from the start of the range you selected.
Feed that position into INDEX — =INDEX(return_range, MATCH(...)) — to turn it into a value.
Anchor the lookup_array with $ (A$2:A$13) before filling the formula down.
What this does
MATCH answers "where is this?" rather than "what is this?". Given a value and a single row or column, it returns the ordinal position of the first match — 1 for the first cell of the range, 3 for the third, and #N/A when nothing matches. That position is rarely the final answer, which is why MATCH almost always feeds another function: INDEX to return a value from that position, VLOOKUP as its col_index_num so the formula survives inserted columns, or a comparison to test whether a value exists at all. The optional third argument is the trap: omitted, it defaults to 1, which assumes the data is sorted ascending and quietly returns the wrong position when it is not. Type 0 explicitly, every time. Most people learn this as a sequence of clicks and forget it by next week; learning it as a pattern instead is what lets you apply it to the next, slightly different version of the problem without starting from scratch. That is the difference this page is trying to make. Treat “match data in two excel sheets” as a small repeatable workflow rather than a one-off click you hope to remember next time. Use a small test block before the live file, so any surprise in the affected sheet shows up while it is still harmless. 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 turns a data step that keeps your analysis trustworthy into a method you can reuse, explain, and defend when the workbook leaves your screen.
A worked example
Month names sit in A2:A13. =MATCH("Apr", A2:A13, 0) returns 4, because April is the fourth cell of that range — not row 4 of the sheet. Combined with INDEX to fetch the matching revenue from B2:B13: =INDEX(B2:B13, MATCH("Apr", A2:A13, 0)) returns 41,200. To test existence rather than fetch a value, wrap it: =IF(ISNUMBER(MATCH(E2, A2:A13, 0)), "found", "not in list"). MATCH is the position engine behind flexible lookups: it is what lets INDEX fetch from any column, what stops VLOOKUP breaking when someone inserts a column, and the cheapest way to ask whether a value exists in a list at all. 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. Keep this page bookmarked for the next time the same question comes up. Better still, repeat the steps once in your own workbook — doing it yourself is what turns a copied answer into something you remember. For “match data in two excel sheets”, 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
- Omitting the third argument, so match_type defaults to 1 and returns a plausible but wrong position on unsorted data.
- Reading the result as a sheet row number — it is a position within the selected range, so a range starting at
A2returns 1 for row 2. - Passing a two-dimensional range as lookup_array;
MATCHtakes one row or one column only. - Comparing a number against a column where the numbers are stored as text, which returns
#N/Aeven though the values look identical. - Leaving the range relative so it drifts when the formula is filled down.
Frequently asked questions
What does the MATCH function do in Excel?
It returns the position of a value within a single row or column — 1 for the first cell of the range, 2 for the second, and #N/A if the value is not there. It does not return the value itself.
Why does MATCH return the wrong number?
Almost always because match_type was omitted. The default is 1, which expects ascending data and returns the last value less than or equal to yours. Add 0 as the third argument to force an exact match.
What is the difference between MATCH and VLOOKUP?
VLOOKUP returns a value; MATCH returns a position. They are often used together: =VLOOKUP(E2, A:D, MATCH("Price", A1:D1, 0), FALSE) keeps working when a column is inserted, because the column number is looked up rather than hard-coded.
Can MATCH search on two criteria?
Yes, in Microsoft 365: =MATCH(1, (A2:A100="North")*(B2:B100="Q3"), 0) multiplies the two conditions and finds the first row where both are TRUE. In older versions, enter it with Ctrl+Shift+Enter.
Other ways people ask this
Platform & version notes
- Several of those searches mention Google Sheets. The standard functions behind "match data in two excel sheets" are listed in Google Sheets too, so check the cell references, argument separators and the result there; menus, shortcuts and file features differ between the two products.
Can I do this in Google Sheets too?
The functions used for "match data in two excel sheets" are in Google Sheets' function list, so the formula can be entered there. Menus and shortcuts differ, and a function list is not a product test: compare the worked result in Sheets before relying on it.