MATCH関数の使い方|一致の種類0・1・-1の違い・INDEXとの組み合わせ・#N/Aの直し方

MATCH関数の使い方|値が何番目にあるかを調べる

MATCH関数は、探したい値が範囲の何番目にあるか(位置の番号)を返す関数です。値そのものではなく「3」のような番号を返すので、INDEX 関数と組み合わせて表から値を取り出すときによく使います。

この記事では、MATCH 関数の使い方を、一致の種類(0・1・-1)の違い、INDEX との組み合わせ、横方向の検索、ワイルドカード、#N/A になる原因と直し方まで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。

練習用Excelファイル(無料ダウンロード)
「基本」「一致の種類」「横方向」「よくある間違い」と、記事内のツールと同じ「サンプル」の5シートです。黄色のセルを書き換えて試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

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 キーを押します❶。

E2 に入れる式
=MATCH(E1,A2:A6,0)
E1 検索値(ぶどう)A2:A6 検索範囲(商品の列)0 一致の種類(0=完全一致)
ひとことで「ぶどう」が商品の列の上から何番目にあるかを調べる
式を分けて読むと(色は画像の枠と同じ)
検索値E1
何を探す?
→ E1 の「ぶどう」
検索範囲A2:A6
どこで探す?
→ 商品の列(見出しは入れない)
一致の種類0
どう探す?
→ 0=ぴったり同じもの
自分の表で使うときは
オレンジに「探す値」、青に「探す列(または行)」を入れます。最後はほとんどの場合 0 です。例:社員番号(H1)が名簿の何行目か=MATCH(H1,A2:A100,0)
  • 表に無い値を探すと #N/A になります。英字の大文字と小文字は区別されません。
エクセルのMATCH関数でぶどうが商品の一覧の何番目かを調べる式と、検索値・検索範囲を色分けした画面
エクセルのMATCH関数でぶどうが商品の一覧の何番目かを調べる式と、検索値・検索範囲を色分けした画面

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

エクセルのMATCH関数で、商品の列の上から3番目にぶどうがあり3になったことを色で示した画面
エクセルのMATCH関数で、商品の列の上から3番目にぶどうがあり3になったことを色で示した画面

答えは 3 になりました❷。式は、次の順に計算しています。

  1. 商品の列(A2:A6)を上から見て、「ぶどう」と同じものを探す
    ⇒ りんご・みかん・ぶどう の 3 つ目
  2. 見つかった位置(何番目か)を返す
    ⇒ 3
ヒント:INDEX と組み合わせると値を取り出せる
MATCH の番号を INDEX に渡すと、=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))
エクセルのMATCH関数で何番目かを調べてINDEXで単価を取り出した例
エクセルのMATCH関数で何番目かを調べてINDEXで単価を取り出した例

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 になります。

エクセルのMATCH関数で一致の種類1と-1の結果を比べた例
エクセルのMATCH関数で一致の種類1と-1の結果を比べた例

試したところ、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関数で見出しの行から月を探して売上を取り出した例
エクセルのMATCH関数で見出しの行から月を探して売上を取り出した例

縦と横の MATCH を2つ使うと、行と列が交わるところの値を取り出す「クロス検索」もできます(クロス検索の方法)。

ワイルドカードで「〜で始まる」を探す

一致の種類が 0 のときは、* (何文字でも)と ? (1文字)が使えます。試したところ、”ぶ*” で「ぶどう」が3番目、”?どう” でも「ぶどう」が見つかりました。

=MATCH("ぶ*",A2:A6,0)

見つからないとき(#N/A)の表示を変える

一覧に無い値(メロン)を探すと #N/A になります。IFERROR で囲むと、「なし」など好きな表示にできます(IFERROR関数)。

=IFERROR(MATCH(E8,A2:A6,0),"なし")

よくある間違い

エクセルのMATCH関数でよくある間違いの例
エクセルのMATCH関数でよくある間違いの例

実際に試した、よくある間違いの例です。上は一致の種類を省いたため、並べ替えていない一覧で「みかん」が 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問で、位置の調べ方からクロス検索・複数条件まで練習できます。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:MATCH関数の関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次