Excel IF Two Cells MATCH

If you just need to excel if two cells match 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 =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

=MATCH(lookup_value, lookup_array, [match_type])

Arguments

Argumentrequired / optionalDescription
lookup_valuerequiredThe value to find.
lookup_arrayrequiredA single row or column to search. MATCH returns a position within it, not a value.
match_typeoptional0 exact (use this), 1 largest value ≤ lookup_value on ascending data (the default), -1 smallest value ≥ lookup_value on descending data.

Related functions

INDEX/MATCHXLOOKUPVLOOKUP
ƒxCompare Two ListsLive
Values in both lists
2

Only in A: 2 · Only in B: 1

=COUNTIF(B:B,A2)>0
Ctrl+CthenCtrl+Shift+V+Cthen+Ctrl+VPaste values · WindowsMac

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. 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 “excel if two cells match”, 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 cells 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

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. 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. Keep this page bookmarked for the next time the same question comes up. Better still, rebuild the example once in your own sheet — doing it yourself, with the tool above to check against, is what turns a copied formula into a technique you own. The short version of “excel if two cells match”: the answer is at the top of this page, the tool proves it on your own numbers, and the sections above explain why it holds so the next variation does not stump you. Excel rewards people who reference cells instead of typing values and who keep inputs separate from formulas, because that is what makes a result you can audit months later. Build it once, deliberately, with the live tool as a check, and you convert a one-off lookup into a reusable skill — which is the whole point of learning the why and not just the what.

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 A2 returns 1 for row 2.
  • Passing a two-dimensional range as lookup_array; MATCH takes one row or one column only.
  • Comparing a number against a column where the numbers are stored as text, which returns #N/A even 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.