cellio

ExcelのMATCH関数の使い方|値の位置(何行目・何列目)を検索する

ExcelのMATCH関数の使い方をわかりやすく解説。指定した値がリストの何番目にあるかを検索する基本構文や完全一致の指定、データの存在確認、INDEX関数やVLOOKUP関数と組み合わせた応用テクニックまで網羅しています。

著者 Ayoub Farid · · 4 分で読めます

MATCH(マッチ)関数は、指定した値がリストの中で「何番目にあるか」(1番目、2番目、17番目など)の位置を返すExcel関数です。単体で使うと地味に感じるかもしれませんが、柔軟なデータ検索を行ったり、「リスト内にこの値が存在するか?」を判定したりする際に不可欠なエンジンとなります。

構文

=MATCH(lookup_value, lookup_array, [match_type])
照合の種類(match_type)意味
0完全一致(基本的にはこれを使用します)
1(省略時のデフォルト)検査値以下の最大値(セル範囲が昇順に並べ替えられている必要があります)
-1検査値以上の最小値(セル範囲が降順に並べ替えられている必要があります)

使用例

セルA2:A4に「Espresso」「Latte」「Tea」と入力されている場合:

=MATCH("Tea",A2:A4,0)   → 3

値が見つからない場合は #N/A エラーが返されます。

値が存在するかどうかを確認する

=ISNUMBER(MATCH(F2,$A$2:$A$500,0))

セルF2の値がリスト内(絶対参照で指定した $A$2:$A$500)にあれば、TRUEが返されます。IF関数と組み合わせれば、わかりやすい表示ラベルを付けることができます。

=IF(ISNUMBER(MATCH(F2,$A$2:$A$500,0)),"On list","Missing")

この数式は、実務で2つの列を比較する際の手軽で便利な方法です。

MATCH関数を他の数式内で活用する

  • INDEX関数と組み合わせた検索:詳しくはINDEX MATCHの解説をご覧ください。
  • VLOOKUP関数の列番号に指定して、列の挿入・削除に強い数式を作る:
=VLOOKUP(F2,$A$1:$H$500,MATCH("Price",$A$1:$H$1,0),FALSE)

ワイルドカードを使用する

照合の種類に 0(完全一致)を指定している場合、*(任意の文字列)や ?(任意の1文字)といったワイルドカードが使えます。たとえば =MATCH("Lat*",A2:A100,0) と入力すると、「Lat」から始まる最初のアイテムの位置を検索できます。

XMATCH関数

新しいバージョンのExcelやGoogleスプレッドシートでは、XMATCH関数が利用可能です。XMATCHは標準で完全一致検索を行い、リストの下(末尾)からの逆順検索にも対応しています。利用可能な環境であれば、より安全で使いやすいためおすすめです。

よくある質問

ExcelのMATCH関数は何を返しますか?

指定したセル範囲内における値の位置(何番目にあるかという数値)を返します。セルに入力されている値そのものを返すわけではありません。

MATCH関数で#N/Aエラーが表示されるのはなぜですか?

指定したセル範囲内に値が完全に一致するものが見つからない(余計なスペースが入っている、文字列と数値の型が異なっているなど)か、並べ替えられていないデータに対して近似一致(1や-1)を使用したことが原因です。

MATCH関数とXMATCH関数の違いは何ですか?

XMATCH関数は初期状態で完全一致検索を行い、より多くの検索オプション(逆順検索など)を備えています。新しいExcelおよびGoogleスプレッドシートで使用可能です。

MATCH関数は大文字と小文字を区別しますか?

いいえ、大文字と小文字は区別されません。

あわせて読みたい