MATCH関数の使い方としくみ|草野球成績管理表で選手名から行番号を特定する例で解説

関数の使い方

指定した値が範囲の中で「何番目にあるか」を調べるMATCH関数について、使い方と内部のしくみを解説します。草野球の成績管理表で、選手名から行番号を特定する場面を例に、初心者向けに丁寧に説明します。

MATCH関数とは

📝 MATCH関数の役割(一言でいうと)

検索範囲の中から指定した値を探し、その値が「範囲の先頭から数えて何番目にあるか」を数字で返す関数です。値そのものではなく「位置(順番)」を返す点が、VLOOKUPなどとの大きな違いです。

基本の書式はこうです。

=MATCH(検索値, 検索範囲, 照合の種類)

「照合の種類」には主に「0」を指定します。これは「検索値と完全に一致するものだけを探す」という意味で、選手名のような文字列を検索する場合はほぼ必ず0を使うと考えて問題ありません。

成績管理表での実例:選手名から行番号を特定する

大阪グーニーズでは、選手の背番号や守備位置をまとめた「選手マスタ」シートを用意しています。A列に選手名、B列に背番号、C列に守備位置が入っているとします。

選手名(A列) 背番号(B列) 守備位置(C列)
2 SUZUKI 7 中堅手
3 NAKATA 3 一塁手
4 YAMAMOTO 5 左翼手

「YAMAMOTO」という選手が、選手名の並び(A2:A20)の中で何番目に入力されているかを調べたいとき、式はこうなります。

✅ 選手名の位置を求める式
=MATCH("YAMAMOTO", A2:A20, 0)

この式は「3」という数字を返します。これは「A2:A20という範囲の中で、先頭(A2)から数えて3番目にYAMAMOTOがある」という意味です。シート上の実際の行番号(4行目)とは数字がズレる点に、後ほど触れます。

MATCHがどのように「3」を導き出しているのか、下の図で見てみましょう。

MATCH関数の使い方:A2からA20の選手名の中でYAMAMOTOが3番目にあることを求める図解 MATCH関数の使い方 検索範囲の中で、指定した値が先頭から何番目にあるかを調べる fx =MATCH(“YAMAMOTO”, A2:A20, 0) A B C 1 選手名 背番号 守備位置 2 SUZUKI 7 中堅手 3 NAKATA 3 一塁手 4 YAMAMOTO 5 左翼手 1 2 3 ※図では5行目以降を省略しています。実際の検索範囲はA20までです。 青い破線=検索範囲(A2:A20) ◯の数字は、範囲の先頭から数えた位置 MATCHが返す値 3 = 先頭から3番目 =MATCH(検索値, 検索範囲, 照合の種類) 検索範囲の中から検索値を探し、範囲の先頭から数えて何番目にあるかを返します。 例:=MATCH(“YAMAMOTO”, A2:A20, 0) → A2:A20の中でYAMAMOTOは3番目なので「3」 大阪グーニーズ データ解説
MATCHは検索範囲を先頭から数え、YAMAMOTOの位置「3」を返す
STEP 1
検索したい選手名を入力するセルを用意する

「YAMAMOTO」のように、探したい選手名を直接入力するか、別セルに入力しておいてそのセルを参照する形にします。

STEP 2
「=MATCH(」と入力し、検索値と検索範囲を指定する

検索値(探したい選手名)を指定したあと、カンマで区切って検索範囲(A2:A20など)をドラッグで選択します。

STEP 3
照合の種類として「0」を入力し、「)」で閉じてEnterキーで確定する

「0」を指定することで、完全に一致する選手名だけを探す設定になります。式を確定すると、範囲内での位置が数値で表示されます。

しくみを理解する:MATCHは何をしているのか

📝 MATCHの内部動作

MATCH関数は、指定した検索範囲を先頭から1セルずつ順番に見ていき、検索値と一致するセルが見つかった時点で、その「範囲内での順番」を数値として返しています。値そのものを取り出す関数ではなく、あくまで「位置を数える」関数だという点がポイントです。

  • 返り値は「範囲内の相対位置」であり、シート上の絶対的な行番号ではない(A2から始まる範囲なら、1番目の答えはシートの2行目を指す)
  • 照合の種類が「0」なら完全一致のみを探し、最初に見つかった位置で処理を終える
  • 照合の種類が「1」(既定値)の場合は昇順ソート済みの範囲から近似一致を探す動きになり、文字列の検索には不向き

この「範囲内の位置」と「シートの行番号」がどうズレるのか、下の図で並べて確認しておきましょう。

MATCHの返り値である範囲内の位置3と、シート上の行番号4がズレることを示す図解 返り値とシートの行番号のズレ 検索範囲がA2から始まると、範囲内の位置と行番号は1つズレる fx =MATCH(“YAMAMOTO”, A2:A20, 0) A 1 選手名 範囲内の位置 2 SUZUKI 1 3 NAKATA 2 4 YAMAMOTO 3 青い破線=検索範囲(A2:A20) ※5行目以降は省略 同じYAMAMOTOの行でも、 2つの数字は一致しません MATCHの返り値 3 シート上の行番号 4 範囲がA2(シートの2行目)から始まるぶん、数え方が1つズレます。 MATCHの返り値は「範囲の中での順番 シート上の行番号とは一致しないことがあります。範囲がA2から始まるなら、返り値の「3」はシートの4行目を指します。 例:A2:A20の3番目 → シート上では 2 + 3 − 1 = 4行目 大阪グーニーズ データ解説
MATCHが返す「範囲内の位置」とシート上の行番号の対応

よくあるミス:狙った選手が見つからない・違う結果が返る原因

⚠️ 原因1:3番目の引数(照合の種類)を省略している

「0」を書き忘れると、既定値の「1」(近似一致)として処理されます。選手名のような文字列の検索では意図しない結果や#N/Aエラーにつながりやすいため、完全一致で探したいときは必ず「0」を明記してください。

⚠️ 原因2:返ってきた数字を「シートの行番号」だと思い込んでいる

検索範囲がA2から始まっている場合、MATCHが返す「3」は範囲内での3番目という意味であり、実際のシートでは4行目を指します。この数字をそのまま別の処理に使うと1行分ズレてしまうことがあるため、範囲の開始行を意識しておく必要があります。

✅ この記事のまとめ
  • MATCH関数は「検索値が範囲内の何番目にあるか」を返す関数
  • 返ってくるのは値ではなく「範囲内の相対的な位置」であり、シートの行番号とは異なる場合がある
  • 選手名などの文字列を検索するときは、照合の種類に必ず「0」(完全一致)を指定する

次回予告

次回のテーマは「INDEX+MATCH」です。今回のMATCHと前回のINDEXを組み合わせることで、VLOOKUPが抱える「検索する列は必ず範囲の左端」という制約を回避する方法を解説していきます。

▶︎ 次回:INDEX+MATCHの使い方としくみ

コメント

タイトルとURLをコピーしました