MATCH関数は、探したい値が範囲の何番目にあるか(位置の番号)を返す関数です。値そのものではなく「3」のような番号を返すので、INDEX 関数と組み合わせて表から値を取り出すときによく使います。
この記事では、MATCH 関数の使い方を、一致の種類(0・1・-1)の違い、INDEX との組み合わせ、横方向の検索、ワイルドカード、#N/A になる原因と直し方まで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。
MATCH関数の書き方(構文)
=MATCH(検索値, 検索範囲, 一致の種類)
| 引数 | 意味 |
|---|---|
| 検索値 | 探したい値(「ぶどう」や、値が入ったセル) |
| 検索範囲 | 探す場所。1行または1列の範囲(A2:A6 など) |
| 一致の種類 | 0=完全に一致するもの/1=検索値以下で最大の値(小さい順に並べた範囲)/-1=検索値以上で最小の値(大きい順に並べた範囲)。省略すると 1 |
結果は、検索範囲の先頭から数えた番号です。シートの行番号ではありません。たとえば A2:A6 の3番目は A4 ですが、MATCH の結果は 3 です。MATCH はすべてのバージョンの Excel で使えます。
基本の使い方:何番目にあるかを調べる
手順:E2 に MATCH の式を入れて Enter
商品の一覧(A2:A6)から、E1 の「ぶどう」が何番目にあるかを調べます。 E2 に次の式を入力して、Enter キーを押します❶。
=MATCH(E1,A2:A6,0) E1A2:A60オレンジに「探す値」、青に「探す列(または行)」を入れます。最後はほとんどの場合 0 です。例:社員番号(H1)が名簿の何行目か
=MATCH(H1,A2:A100,0) - 表に無い値を探すと #N/A になります。英字の大文字と小文字は区別されません。

確認:3 は「ぶどう」が上から 3 番目ということ

答えは 3 になりました❷。式は、次の順に計算しています。
- 商品の列(A2:A6)を上から見て、「ぶどう」と同じものを探す
⇒ りんご・みかん・ぶどう の 3 つ目 - 見つかった位置(何番目か)を返す
⇒ 3
=INDEX(B2:B6,MATCH(E1,A2:A6,0)) でぶどうの単価 450 を取り出せます(すぐ下の節)。INDEX関数と組み合わせて値を取り出す
MATCH で求めた番号を INDEX 関数に渡すと、その番号の値を取り出せます。E3 の式は、単価の列(B2:B6)の3番目、つまりぶどうの単価 450 を返します。
=INDEX(B2:B6,MATCH(E1,A2:A6,0))

VLOOKUP と違い、取り出す列が検索する列より左にあっても使えます。INDEX と MATCH の範囲は、同じ行(ここでは2行目)から始めるのがポイントです(INDEX関数の使い方)。
まず動かしてみよう|この記事のサンプルをその場で試せます
ブラウザの上で MATCH 関数を試せます。B2 の式は =MATCH(A2,A5:A8,0) です。黄色いセル(A2 の科目など)を書き換えると、何番目かがその場で変わります。表に無い科目にすると #N/A になります。
一致の種類 0・1・-1 の違い
| 一致の種類 | 探すもの | 範囲の並べ方 | 主な使い道 |
|---|---|---|---|
| 0 | 検索値と完全に一致するもの | 並べ替え不要 | 商品名・番号で探す |
| 1(省略時) | 検索値以下で最大の値 | 小さい順(昇順) | 点数から評価・金額から料率 |
| -1 | 検索値以上で最小の値 | 大きい順(降順) | 大きい順の表で区切りを探す |
点数 75 で試します。小さい順の表(0・60・70・80・90)で一致の種類を 1 にすると、75 以下で最大の 70 が3番目なので 3 になり、評価は B です。大きい順の表(90・80・70・60・0)で -1 にすると、75 以上で最小の 80 が2番目なので 2 になります。

試したところ、1 で一覧の最小値より小さい値(-5)を探すと #N/A、-1 で最大値より大きい値(95)を探すと #N/A になりました。また、大きい順の表に 1 を使うと 5 という誤った位置が返りました。並べ方と一致の種類はセットで合わせます。
横方向(行)から探す
MATCH は横に並んだ範囲でも使えます。見出しの行(B1:E1)から「6月」を探すと 3(3列目)です。INDEX と組み合わせると、6月の売上 180 を取り出せます。
=INDEX(B2:E2,MATCH(B4,B1:E1,0))

縦と横の MATCH を2つ使うと、行と列が交わるところの値を取り出す「クロス検索」もできます(クロス検索の方法)。
ワイルドカードで「〜で始まる」を探す
一致の種類が 0 のときは、* (何文字でも)と ? (1文字)が使えます。試したところ、”ぶ*” で「ぶどう」が3番目、”?どう” でも「ぶどう」が見つかりました。
=MATCH("ぶ*",A2:A6,0)
見つからないとき(#N/A)の表示を変える
一覧に無い値(メロン)を探すと #N/A になります。IFERROR で囲むと、「なし」など好きな表示にできます(IFERROR関数)。
=IFERROR(MATCH(E8,A2:A6,0),"なし")
よくある間違い

実際に試した、よくある間違いの例です。上は一致の種類を省いたため、並べ替えていない一覧で「みかん」が 3 と返りました(正しくは 2)。省略すると 1(以下の最大)として探すためで、エラーにならないので気づきにくい間違いです。下は、数値の 103 が入った一覧を、文字の「103」で探したため #N/A になりました。VALUE で数値に直すと 3 になりました。
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 違う位置が返る(エラーにならない) | 一致の種類を省いた/並べ方と合っていない | 完全一致は必ず 0 を書く。1 は小さい順、-1 は大きい順に並べる。 |
| #N/A になる | 一覧に無い/数値と文字の数字が混ざっている | IFERROR で表示を決める。文字の数字は VALUE で数値に直す。 |
| 1 で #N/A になる | 検索値が一覧の最小値より小さい | 一覧の先頭に 0 などの最小の区切りを入れる。 |
| INDEX と組み合わせると1つずれる | INDEX と MATCH の範囲の始まりの行が違う | 2つの範囲を同じ行から始める。 |
よくある質問
MATCH と XMATCH の違いは?
XMATCH は Microsoft 365・Excel 2021 以降の関数で、省略すると完全一致になり、並べ替えなしで「以下の最大」「以上の最小」も探せます。試したところ、=XMATCH(75,{0,60,70,80,90},-1) は 3(70 の位置)でした。古いバージョンでも使うファイルなら MATCH が安心です(XMATCH関数の使い方)。
複数の条件で位置を探せますか?
条件を掛け算でつなげた式を MATCH で探すと、すべての条件に合う最初の行の番号が分かります(INDEX+MATCHで複数条件検索)。
練習問題で確かめたいときは?
INDEX・MATCH関数の練習問題10問で、位置の調べ方からクロス検索・複数条件まで練習できます。
