MATCH関数:指定の範囲を検索し範囲内での相対位置を取得する

MATCH 関数は Excel で用意されている関数の一つで、引数に指定した項目の値を範囲内で検索し、範囲内での相対的な位置を取得します。ここでは Excel における MATCH 関数の使い方について解説します。

※ Excel の対応バージョン : 365 web 2021 2019 2016 2013 2010 2007

(Last modified: )

MATCH関数の定義

MATCH 関数は引数に指定した項目の値を範囲内で検索し、範囲内での相対的な位置を取得します。

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

1 番目の引数に検索値を指定します。 2 番目の引数で検索値を検索するセル範囲を指定します。検査範囲は B2:B6 のように同じ行内の範囲を指定することもできますし、 B2:E2 のように同じ列内の範囲を指定することもできます。

MATCH関数の定義(1)

戻り値は範囲内での相対的な位置を返します。範囲内の先頭のセルが 1 、次のセルが 2 のように位置が割り当てられており、範囲内で検査値が見つかった場合は位置として数値を返します。

MATCH関数の定義(2)

例えば検査値として "A-03" を入力し、検査範囲として B3:B7 を指定した場合、戻り値として 3 を取得します。

MATCH関数の定義(3)

照合の種類

3 番目の引数は省略可能な引数で照合の種類を指定します。指定可能な値については次の通りです。

照合の種類説明
0ワイルドカードを一致を行います。見つからない場合は #N/A
1完全一致。見つからない場合は、検索値よりも小さな値の中で最大の項目を一致したものとみなす
-1完全一致。見つからない場合は、検索値よりも大きな値の中で最小の項目を一致したものとみなす

一致モードで 1 を指定すると、検索値が見つからなかった場合に検索値よりも小さくて最大の値を一致したものとみなすため、検索値として "A-04" を指定すると "A-03" の項目が一致したものとみなされます。 1 を指定する場合は検査範囲の値が昇順で並べられている必要があります。一致モードを省略した場合は 1 が指定されたものとみなされます。

照合の種類(1)

一致モードで -1 を指定すると、検索値が見つからなかった場合に検索値よりも大きく最小の値を一致したものとみなすため、検索値として "A-04" を指定すると "B-01" の項目が一致したものとみなされます。 -1 を指定する場合は検査範囲の値が降順で並べられている必要があります。

照合の種類(2)

一致モードで 0 を指定した場合、検索値が見つからなかった場合は #N/A を返します。

照合の種類(3)

また一致モードで 0 を指定した場合は完全一致ではなくワイルドカードを使った検索が可能です。使用可能なワイルドカードは次の 3 つです。

ワイルドカード説明
?任意の一文字
*任意の数の文字
~文字として?や*や~を使用したい場合に~?のように直前に記述する

下記では一致モードに 0 を指定した上で、検索値としてワイルドカードを使って "A*3" と指定しています。この場合 "A" で始まり任意の文字が任意の個数続いたあとで最後に "3" で終わる値と一致します。

照合の種類(4)

MATCH関数の使い方

それでは実際に MATCH 関数を使ってみます。 Excel のシートに対象の数値を次のように入力しました。

MATCH関数の使い方(1)

取得した位置を表す番号を表示する C10 セルを選択し、次のように入力しました。

=MATCH(B10,B3:B7,1)

MATCH関数の使い方(2)

Enter キーを押すと、 C10 セルには次のように表示されます。検索値を入力する B10 セルに値が何も入っていないためです。

MATCH関数の使い方(3)

それでは B10 セルに "B-01" と入力します。

MATCH関数の使い方(4)

Enter キーを押すと、 C10 セルには次のように表示されます。

MATCH関数の使い方(5)

MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする

MATCH 関数と INDEX 関数を組み合わせることで、指定した文字列と一致する行を取得し、その行にある任意の列のデータを取得できます。次のシートを見てください。

MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする(1)

氏名を入力すると住所を表示するようにします。結果を表示する C11 セルに次のような数式を入力しました。

=IFERROR(INDEX(D2:D8,MATCH(C10,C2:C8,0),1),"--")

MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする(2)

MATCH 関数を使って C10 セルに入力された値をセル範囲 C2:C8 で検索してインデックスを取得します。そして INDEX 関数を使ってセル範囲 D2:D8 から行番号に先ほど MATCH 関数を使って取得したインデックス、列番号に 1 を指定して値を取得しています。 IFERROR 関数は MATCH 関数で値が検索できなかったときにエラーの代わりに "--" を表示するために使用しています。

C10 セルに検索する名前を入力すると、住所を C11 セルに表示します。

MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする(3)

MATCH関数とINDEX関数を組み合わせてVLOOKUP関数に似た使い方をする(4)

MATCH 関数と INDEX 関数を組み合わせることで VLOOKUP 関数と似た処理を行うことができました。

INDEX 関数の使い方については「INDEX関数:領域内の行番号と列番号が示すセルの参照を取得する」を参照されてください。

MATCH関数の便利な利用方法

MATCH 関数の便利な利用方法を下記の記事で紹介しています。

-- --

Excel における MATCH 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。