- 公開日:
- 更新日:
ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す
Excelの関数の中でもよく使用される関数の1つとしてMATCH関数があります。大量のデータが表形式である場合、欲しいデータが表の中でどの位置にあるのかを知りたいときに役立ちます。
引数が多いので難しいという印象がある関数ですが、初めてMATCH関数を触る人でもわかりやすいように引数を1つずつ分解して解説しています。
MATCH関数とは?
MATCH(マッチ)関数は、指定した範囲内で探したい数値や文字列がどの位置にあるかを列・行番号で返す関数です。
MATCH関数を使用することで探したいデータが表の何行目、何列目にあるのかを調べることができます。
MATCH関数の書式
まずはMATCH関数の書式を確認しましょう。

MATCH関数は、指定された照合の種類に従って検査範囲内を検索し、検索値と一致する要素の、配列内での相対的な位置を表す数値を返します。
書式は「=MATCH(検索値, 検索範囲, [照合の種類])」のように記述します。MATCH関数では引数を最大3つ使用します。
※引数(ひきすう)とは、Excelの関数を使用する際に必要な情報です。関数が結果を返すための判断材料とイメージしましょう。関数名の後の括弧「()」内に入力します。
第1引数(検索値)

1番目の引数は「検索値」です。この引数は必須です。検索したい値またはセル参照を指定します。文字列などの値を指定するときは「"文字列"」のようにダブルクォーテーションで囲います。
検索値は第2引数である「検索範囲」の中から検索します。
第3引数の照合の種類が「0」の場合、検査値に疑問符(?)やアスタリスク(*)などのワイルドカード文字が使用できます。
第2引数(検索範囲)

2番目の引数は「検索範囲」です。この引数は必須です。検索するセルの範囲を指定します。
第3引数(照合の種類)

3番目の引数は「照合の種類」です。この引数は任意です。検索範囲の中から検査値を探す方法として「-1」「0」「1」のいずれかを指定します。省略すると「1」が指定されます。
照合の種類 | 検索値を探す方法 |
---|---|
1 | 検査値以下の最大値を検索します。第2引数「検索範囲」を昇順に並び替えておく必要があります。 |
0 | 検査値と完全一致する最初の値を検索します。 |
-1 | 検査値以上の最小値を検索します。第2引数「検索範囲」は降順に並び替えておく必要があります。 |
MATCH関数の使い方(実践)
実際にMATCH関数を使用する例をご紹介します。引数をどのように使用するか見てみましょう。

まずは上記の表を準備しましょう。今回の目的としてはケーキが何行目にあるのか、売上個数が何列目にあるかを求めるとします。

まずG2セルを選択し、セルに直接『=MATCH(』と入力します。

検索値としてF2セルを選択します。G2セルに『=MATCH(F2,』と入力されました。

A2セルからA6セルまでをまとめて範囲選択します。G2セルに『=MATCH(F2,A2:A6,』と入力されました。

照合の種類として、ここでは完全一致の「0」を指定します。G2セルに『=MATCH(F2,A2:A6,0)』と入力し、【Enter】キーを押します。

指定した範囲(A2:A6)で検索値(ケーキ)の位置が「3」行目とG2セルに表示されました。

上記と同じように「売上個数」の位置を求めましょう。G3セルに『=MATCH(F3,B1:C1,0)』と入力し、Enterを押します。

指定した範囲(B1:C1)で検索値(売上個数)の位置が「2」列目とG3セルに表示されました。
MATCH関数の応用編
ワイルドカードを使ったあいまいな検索方法
MATCH関数はあいまいな検索も可能です。ワイルドカードを使用することで前方一致や部分一致、後方一致などの検索ができます。
部分一致検索
検索する文字列の前後に「*」を付け加えることで部分一致を検索することができます。

上図でA列より「コ」を含むセルの位置を求めるとします。G4セルを選択し、『=MATCH("*コ*",A2:A6,0)』と入力します。
文字列の前後に「*」(アスタリスク)を入れることで文字列が含むパターンを探します。

A列で「コ」を含むのが4行目の「チョコレート」でした。正しい位置がG4セルに表示されています。
前方一致検索
検索する文字列の後ろに「*」を付け加えることで前方一致で検索をすることができます。

上図でA列より「ク」から始まるセルの位置を求めるとします。G5セルを選択し、『=MATCH("ク*",A2:A6,0)』と入力します。
文字列の後に「*」(アスタリスク)を入れることで文字列の先頭が「ク」であるパターンを探します。

A列で「ク」で始まるのが2行目の「クッキー」でした。正しい位置がG5セルに表示されています。
後方一致検索
検索する文字列の前に「*」を付け加えることで後方一致で検索をすることができます。

上図でA列より「ロ」で終わるセルの位置を求めるとします。G6セルを選択し、『=MATCH("*ロ",A2:A6,0)』と入力します。
文字列の前に「*」(アスタリスク)を入れることで文字列の最後が「ロ」であるパターンを探します。

A列で「ロ」で終わるのが5行目の「マシュマロ」でした。正しい位置がG6セルに表示されています。
任意の文字を検索
「?」を使用することで任意の1文字を検索できます。???と指定すれば任意の3文字を検索できます。

上図でA列より「マ」から始まる4文字のセルの位置を求めるとします。G7セルを選択し、『=MATCH("マ???",A2:A6,0)』と入力します。
文字列の後ろに「?」を入れることで文字列の先頭が「マ」、任意の3文字であるパターンを探します。

A列で「マ」から始まる4文字のセルが1行目の「マカロン」でした。正しい位置がG7セルに表示されています。
複数条件で検索する方法
MATCH関数を使って複数の検索値にあてはまる位置を求める方法をご紹介します。

上記のような表を使用します。今回の目的としてはF2セルとG2セルにある条件1と条件2をともに満たす行が何行目にあるのか求めるとします。

まずH2セルを選択し、セルに直接『=MATCH(』と入力します。

検索値としてF2セルとG2セルを選択します。「=MATCH(」に続けてH2セルに『F2&G2,』と入力します。
「&」を使って2つのセルを結合しています。

A2セルからA6セルまで、B2セルからB6セルまでをまとめて範囲選択します。「=MATCH(F2&G2,」に続けてH2セルに『A2:A6&B2:B6,』と入力します。
「&」を使って2つのセル範囲を結合しています。

照合の種類として、ここでは完全一致の「0」を指定します。「=MATCH(F2&G2,A2:A6&B2:B6,」に続けてH2セルに『0)』と入力し、Enterを押します。

複数の検索値(条件1と条件2)で複数の範囲(A2:A6とB2:B6)に一致した位置が「2」行目とH2セルに表示されました。
MATCH関数とINDEX関数を組み合わせる
MATCH関数とINDEX関数を組み合わせてデータを抽出するやり方をご紹介しています。MATCH関数はINDEX関数と組み合わせることが多いのでぜひやり方を覚えましょう。
ExcelのINDEX関数とMATCH関数を組み合わせた使い方
#N/Aエラーが起きたときの対処法
MATCH関数を使用していると「#N/A(ノー・アサイン)」エラーが出たり、意図しない結果になったりすることがあります。「#N/A」エラーになるのは関数の書式が違ったり、引数の使い方が間違っていたりすることがほとんどです。
MATCH関数で「#N/A」エラーになる主な例を挙げながらその対処方法を説明していきます。
検索値が検索範囲にない場合
MATCH関数では検索範囲から検索値を検索します。検索値が検索範囲内にない場合は、「#N/A」エラーが表示されます。

例えば上記の表で、左側の表からケーキが含まれている行の位置をG2セルに表示するとします。
検索範囲として「B2:B6」としてしまい「#N/A」エラーが表示されてしまいました。「ケーキ」は指定した検索範囲には含まれていません。

検索値が検索範囲に含まれるように修正したのが上図です。今度は「A2:A6」を検索範囲とすることでちゃんと検索値も含まれています。
完全一致を指定していて見つからない
MATCH関数では第3引数の「照合の種類」で「0」を指定すると完全一致で検索します。完全一致するものがない場合、「#N/A」エラーが表示されます。

例えば上記の表で、左側の表からゼリーが含まれている行の位置をG2セルに表示するとします。
検索範囲には検索値がないので「#N/A」エラーが表示されます。検索範囲に存在するものを検索値としましょう。
検索値を参照する列が昇順で並び替えられていない
MATCH関数では第3引数の「照合の種類」で「1」を指定した場合、検索値を参照する列は昇順で並び替えておく必要があります。検索値を参照する列が昇順になっていないと正しい結果にならないことがあります。

例えば上記の表で、左側の表から320の近似値がある行の位置をG4セルに表示するとします。
上図ではC列が昇順に並び替えられていないので「#N/A」エラーが表示されました。

C列を昇順に並び替えることで正しい結果を得られます。
他の関数も合わせてチェック!
Office Hackでは、ここでご紹介できなかった関数の一覧ページもご用意しております。ぜひ、参考にしてください。