MATCH関数:指定の範囲を検索し範囲内での相対位置を取得する
MATCH 関数は Excel で用意されている関数の一つで、引数に指定した項目の値を範囲内で検索し、範囲内での相対的な位置を取得します。ここでは Excel における MATCH 関数の使い方について解説します。
※ Excel の対応バージョン : 365 web 2021 2019 2016 2013 2010 2007
(Last modified: )
MATCH関数の定義
MATCH
関数は引数に指定した項目の値を範囲内で検索し、範囲内での相対的な位置を取得します。
1 番目の引数に検索値を指定します。 2 番目の引数で検索値を検索するセル範囲を指定します。検査範囲は B2:B6 のように同じ行内の範囲を指定することもできますし、 B2:E2 のように同じ列内の範囲を指定することもできます。
戻り値は範囲内での相対的な位置を返します。範囲内の先頭のセルが 1 、次のセルが 2 のように位置が割り当てられており、範囲内で検査値が見つかった場合は位置として数値を返します。
例えば検査値として "A-03" を入力し、検査範囲として B3:B7 を指定した場合、戻り値として 3 を取得します。
照合の種類
3 番目の引数は省略可能な引数で照合の種類を指定します。指定可能な値については次の通りです。
照合の種類 | 説明 |
---|---|
0 | ワイルドカードを一致を行います。見つからない場合は #N/A |
1 | 完全一致。見つからない場合は、検索値よりも小さな値の中で最大の項目を一致したものとみなす |
-1 | 完全一致。見つからない場合は、検索値よりも大きな値の中で最小の項目を一致したものとみなす |
一致モードで 1 を指定すると、検索値が見つからなかった場合に検索値よりも小さくて最大の値を一致したものとみなすため、検索値として "A-04" を指定すると "A-03" の項目が一致したものとみなされます。 1 を指定する場合は検査範囲の値が昇順で並べられている必要があります。一致モードを省略した場合は 1 が指定されたものとみなされます。
一致モードで -1 を指定すると、検索値が見つからなかった場合に検索値よりも大きく最小の値を一致したものとみなすため、検索値として "A-04" を指定すると "B-01" の項目が一致したものとみなされます。 -1 を指定する場合は検査範囲の値が降順で並べられている必要があります。
一致モードで 0 を指定した場合、検索値が見つからなかった場合は #N/A
を返します。
また一致モードで 0 を指定した場合は完全一致ではなくワイルドカードを使った検索が可能です。使用可能なワイルドカードは次の 3 つです。
ワイルドカード | 説明 |
---|---|
? | 任意の一文字 |
* | 任意の数の文字 |
~ | 文字として?や*や~を使用したい場合に~?のように直前に記述する |
下記では一致モードに 0 を指定した上で、検索値としてワイルドカードを使って "A*3" と指定しています。この場合 "A" で始まり任意の文字が任意の個数続いたあとで最後に "3" で終わる値と一致します。
MATCH関数の使い方
それでは実際に MATCH
関数を使ってみます。 Excel のシートに対象の数値を次のように入力しました。
取得した位置を表す番号を表示する C10 セルを選択し、次のように入力しました。
=MATCH(B10,B3:B7,1)
Enter
キーを押すと、 C10 セルには次のように表示されます。検索値を入力する B10 セルに値が何も入っていないためです。
それでは B10 セルに "B-01" と入力します。
Enter
キーを押すと、 C10 セルには次のように表示されます。
MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする
MATCH
関数と INDEX
関数を組み合わせることで、指定した文字列と一致する行を取得し、その行にある任意の列のデータを取得できます。次のシートを見てください。
氏名を入力すると住所を表示するようにします。結果を表示する C11 セルに次のような数式を入力しました。
=IFERROR(INDEX(D2:D8,MATCH(C10,C2:C8,0),1),"--")
MATCH
関数を使って C10 セルに入力された値をセル範囲 C2:C8 で検索してインデックスを取得します。そして INDEX
関数を使ってセル範囲 D2:D8 から行番号に先ほど MATCH
関数を使って取得したインデックス、列番号に 1 を指定して値を取得しています。 IFERROR
関数は MATCH
関数で値が検索できなかったときにエラーの代わりに "--" を表示するために使用しています。
C10 セルに検索する名前を入力すると、住所を C11 セルに表示します。
MATCH
関数と INDEX
関数を組み合わせることで VLOOKUP
関数と似た処理を行うことができました。
※ INDEX
関数の使い方については「INDEX関数:領域内の行番号と列番号が示すセルの参照を取得する」を参照されてください。
MATCH関数の便利な利用方法
MATCH
関数の便利な利用方法を下記の記事で紹介しています。
・複数のセルの中で文字数が一番多い値を取得する(LEN,MAX,INDEX,MATCH)
・重量とサイズの組み合わせから送料を取得する(INDEX,MATCH)
・誕生日から星座を取得する(INDEX,MATCH,MONTH,DAY)
-- --
Excel における MATCH 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。