更新日:、 作成日:
エクセル MATCH 関数:セルを検索して見つかった位置を取得する
はじめに
エクセルの MATCH 関数の使い方を紹介します。
MATCH 関数はセルを検索して見つかった位置を取得します。引数を省略したり並べ替えなくても検索できる上位互換の「XMATCH 関数」があります。
=MATCH(100,A1:A3,0) のようにして、100 を検索して列「A」の何番目の位置にあるか取得できます。
=MATCH("エクセル",A1:C1,0) のようにして、エクセル を検索して行「1」の何番目の位置にあるか取得できます。
=IFERROR(MATCH(100,A1:A3,0),0) のようにして、検索結果が見つからないときに 0 を表示できます。
複数行や複数列から検索できます。
MATCH 関数の引数
MATCH(検索値, 検索範囲)
検索範囲の中から検索値と 1 番近い値が何番目のセルにあるのかを取得します。
MATCH(検索値, 検索範囲, 一致モード)
一致モードで検索値と一致するセルの位置を取得するように指定できます。
引数「検索値」 | 検索する値を、数値、文字列、セル参照、関数などで指定します。 引数「一致モード」が 0 のときだけ、ワイルドカードを使用できます。 | スピル化 |
引数「検索範囲」 | 検索されるセルの範囲を 1 行または 1 列で指定します。 | |
引数「一致モード」 | 省略できます。検索方法を指定します。 1 または省略:検索する値と同じまたは、それ以下の最大値の位置が取得されます。引数「検索範囲」が昇順に並べられている必要があります。 0:検索する値と同じ値のセルの位置が取得されます。 -1:検索する値と同じまたは、それ以上の最小値の位置が取得されます。引数「検索範囲」が降順に並べられている必要があります。 | スピル化 |
スピル化:セルの範囲や配列を指定すると結果が「スピル」します。
引数「検索値」
引数「一致モード」が 0 のときに使用できるワイルドカードには次のものがあります。
パターン | 説明 | 使用例 | 一致例 |
* | 任意の長さの文字 | "あ*" | あ, あい, あいう |
? | 任意の 1 文字 | "あ?" | あい, あか, あき |
~ | ワイルドカードの文字 * ? を検索する | "あ~?~*" | あ?* |
スポンサーリンク
使い方
MATCH 関数の使い方を紹介します。
1 列から検索値と同じ値のセルの位置を取得する
値の列から検索値と同じ エクセル のセルの位置を取得します。引数「一致モード」に 0 を指定して、引数「検索値」と同じ値を検索できます。
取得される値は、一番上のセルを基準とした 1 からの連番です。
1 行から検索値と同じ値のセルの位置を取得する
値の行から検索値と同じ エクセル のセルの位置を取得します。引数「一致モード」に 0 を指定して、引数「検索値」と同じ値を検索できます。
取得される値は、一番左のセルを基準とした 1 からの連番です。
特定の文字が入っているセルの位置を取得する
ワイルドカードを使用して ワード が入っているか検索して、そのセルの位置を取得します。
=MATCH("ワード*",B3:B6,0)
=MATCH("*ワード",B3:B6,0)
名前が ワード で始まる値は "ワード*" のように入力します。
名前が ワード で終わる値は "*ワード" のように入力します。
見つからないときに 0 にする
検索結果が見つからないときに 0 を表示します。「IFERROR 関数」を使用して、エラーのときの値を表示できます。
=MATCH(B8,B3:B5,0)
MATCH 関数は検索結果が見つからないときにエラーになります。
値が基準値以下の最大値を検索する
基準値が 40 のとき、値が 40 以下の最大値のセルの位置を取得します。引数「一致モード」に 1 を指定して、引数「検索値」以下の最も近い値を検索できます。
日付ならその日以前の一番近い日付になります。
引数「検索範囲」が昇順に並べ替えられている必要があります。
値が基準値以上の最小値を検索する
基準値が 5 のとき、値が 5 以上の最小値のセルの位置を取得します。引数「一致モード」に -1 を指定して、引数「検索値」以上の最も近い値を検索できます。
日付ならその日以降の一番近い日付になります。
引数「検索範囲」が降順に並べ替えられている必要があります。
高度な使い方
MATCH 関数と他の関数を組み合わせた使い方などを紹介します。
好きな列を検索して値を取得する
名前を検索して No. を取得します。「INDEX 関数」と MATCH 関数を組み合わせて、好きな列や行から検索できます。見出しでも検索できます。
=XLOOKUP(B9,$C$3:$C$5,$B$3:$B$5)
「VLOOKUP 関数」は左端の列からしか検索できません。
複数条件で検索する
名前とバージョンを検索して両方に一致するセルの位置を取得します。
検索専用の列を作成して、その中に名前とバージョンを区切り文字を付けて結合します。
引数「検索値」に検索専用と同じように名前とバージョンを区切り文字を付けて結合した値を入力して、複数条件に対応できます。
=XMATCH(B8&","&C8,C3:C5&","&D3:D5)
複数列、複数行から検索する
複数行または複数列から検索するには「IFERROR 関数」の中に MATCH 関数を入力します。見つからないでエラーになるときに次の行や列から検索できます。
=IFERROR(MATCH(1 列目),MATCH(2 列目))
3 列:
=IFERROR(MATCH(1 列目),IFERROR(MATCH(2 列目),MATCH(3 列目)))
複数列から値が 40 のセルの位置を取得します。/p>
解説
引数を省略したり並べ替えなくても検索できる上位互換である「XMATCH 関数」があります。通常はそちらを使用します。
取得するセルの位置は引数「検索範囲」の一番左または一番上のセルを基準とした 1 からの連番です。10, 20, 30 の中から 20 を検索すると 2 が取得されます。
引数「検索範囲」に 1 行または 1 列だけ指定します。
引数「検索範囲」が複数の行列のときはエラー #N/A になります。
引数「検索値」が引数「検索範囲」から見つからないときはエラー #N/A になります。
文字列を検索するには、引数「一致モード」を 0 にします。一致する文字列を検索できます。
引数「一致モード」が 0 なら、文字列の大文字と小文字は区別しません。"ABC" と "abc" は等しいです。
引数「一致モード」が 0 なら、引数「検索値」にワイルドカードを使用できます。
引数「一致モード」が -1 のとき、引数「検索範囲」が降順に並べ替えられている必要があります。そうでないときは正しい結果を取得できません。
引数「一致モード」が 1 のとき、引数「検索範囲」が昇順に並べ替えられている必要があります。そうでないときは正しい結果を取得できません。
例えば、引数「検索値」が 2 なら、次の画像では 1, 10, 2, 20 の順で検索します。検索値より大きい値が見つかった時点で、それ以降の値は検索しません。昇順のときにそれ以降に一致する値はないからです。10 と比較したとき 2 より大きいのでこれ以降の値は検索されません。結果は 10 の 1 つ前のセルの位置を取得します。
MATCH と XMATCH の違い
MATCH 関数と「XMATCH 関数」の違いは引数「一致モード」の動作にあります。
- MATCH 関数:引数「一致モード」を省略すると検索する値と同じまたは、それ以下の最大値と一致します。1 または -1 のとき、引数「検索範囲」が昇順や降順に並べられている必要があります。
- XMATCH 関数:引数「一致モード」を省略すると検索する値と同じ値と一致します。1 または -1 のとき、引数「検索範囲」が並べ替えられている必要はありません。
「XMATCH 関数」を使用できるバージョンならそちらを使用します。入力する引数が 1 つ少なくなります。
取得した位置の使い道
「INDEX 関数」や「VLOOKUP 関数」のように、引数に列番号や行番号を入力する関数と組み合わせます。
「XLOOKUP 関数」のように好きな列や行から検索するには「INDEX と MATCH 関数を組み合わせる」をご覧ください。
スポンサーリンク