Excelでデータ検索といえば、長年「MATCH関数」が定番でした。しかし、Microsoft 365やExcel 2021以降では、より高機能で柔軟な「XMATCH関数」が登場しています。XMATCH関数は、検索方向の指定やエラー処理の簡略化など、従来のMATCH関数では難しかった点を大きく改善した関数です。本記事では、XMATCH関数の基本的な使い方から、MATCH関数との違い、実務で役立つ具体的な使用例までをわかりやすく解説します。これからのExcel作業を効率化したい方は、ぜひ参考にしてください。
XMATCH関数は、指定した値が配列や範囲の中で「何番目に位置しているか」を返す検索関数です。基本的な役割はMATCH関数と同じですが、より直感的で柔軟な指定ができる点が特徴です。
特に、検索方法や検索方向を引数で明確に指定できるため、意図しない検索結果を防ぎやすくなっています。
XMATCH関数は次のような場面で活躍します。
・一覧表から特定の値の位置を知りたいとき
・XLOOKUP関数と組み合わせて高度な検索を行いたいとき
・昇順、降順を問わず正確に検索したいとき
従来のMATCH関数に慣れている人ほど、その進化を実感できる関数といえるでしょう。
XMATCH関数の基本構文は次のとおりです。
XMATCH(検索値, 検索範囲, [一致モード], [検索モード])
それぞれの引数の意味は以下のとおりです。
検索値は、探したい値を指定します。数値、文字列、セル参照のいずれも使用できます。
検索範囲は、検索を行う配列やセル範囲を指定します。縦一列、または横一行の範囲が基本です。
一致モードは、省略可能な引数で、検索値との一致条件を指定します。完全一致だけでなく、近似一致も明示的に指定できます。
検索モードは、省略可能な引数で、検索方向や特殊な検索方法を指定します。先頭から検索するか、末尾から検索するかを指定できる点が特徴です。
引数が増えた分、最初は難しく感じるかもしれませんが、慣れると意図した検索結果を安定して得られるようになります。
XMATCH関数とMATCH関数の最大の違いは「検索方法の指定が明確になったこと」です。
MATCH関数では、検索方法を数値で指定する必要があり、意味を覚えていないと誤用しやすいという欠点がありました。
XMATCH関数では、完全一致や近似一致を論理的に指定できるため、読みやすく、他人が見ても理解しやすい数式になります。
また、MATCH関数ではできなかった「後ろから検索する」という指定も、XMATCH関数なら簡単に行えます。
さらに、MATCH関数では昇順・降順の制約が厳しかったのに対し、XMATCH関数はその制約が緩和されています。
このため、実務データのように並び順が一定でない表でも、安心して利用できます。
XMATCH関数では、一致モードを指定することで検索の挙動を細かく制御できます。
完全一致を指定すれば、検索値と完全に一致する値のみを探します。
部分一致や近似一致を使うことで、「指定した値以上」「指定した値以下」といった条件検索も可能です。
例えば、点数表から合格ラインを超えた最初の位置を探したい場合などに、近似一致は非常に便利です。
一致モードを明示的に指定することで、意図しない検索結果を防げる点も、XMATCH関数の大きなメリットです。
XMATCH関数の大きな特徴のひとつが、検索モードの指定です。
通常の検索では、範囲の先頭から順に検索しますが、検索モードを指定することで末尾から検索することもできます。
これにより、「最新データを取得したい」「最後に出てくる値を探したい」といったニーズにも対応できます。
また、二分探索を指定することで、大量データでも高速に検索できるケースがあります。
ただし、二分探索を使う場合は、データが昇順または降順に並んでいる必要があるため、使用時には注意が必要です。
XMATCH関数は、XLOOKUP関数と組み合わせることで真価を発揮します。
XLOOKUP関数単体でも検索は可能ですが、位置情報が必要な場合にはXMATCH関数が役立ちます。
例えば、特定の条件に合致する列番号や行番号を取得し、それを別の計算に利用するといった高度な使い方が可能です。
これにより、VLOOKUP関数やHLOOKUP関数では難しかった柔軟な検索処理を実現できます。
実務では、商品一覧や顧客リスト、売上データなど、さまざまな表でXMATCH関数が活躍します。
商品コードから該当商品の行番号を取得し、その行をもとに別の計算を行うケース。
月別データの中から、最新月の位置を取得して集計に使うケース。
このように、単なる検索だけでなく「データ処理の起点」として使える点が、XMATCH関数の強みです。
| A列(商品ID) | B列(商品名) |
|---|---|
| A001 | りんご |
| A002 | みかん |
| A003 | ばなな |
| A004 | ぶどう |
商品ID 「A003」 が、上から何番目にあるかを調べたい。
=XMATCH("A003", A2:A5)
3 | D列 |
|---|
| A004 |
=XMATCH(D1, A2:A5)
| A列(日付) | B列(売上) |
|---|---|
| 2024/01/01 | 100 |
| 2024/01/02 | 150 |
| 2024/01/03 | 120 |
| 2024/01/02 | 180 |
「2024/01/02」 が最後に出てくる位置を調べたい。
=XMATCH(DATE(2024,1,2), A2:A5, 0, -1)
4
👉 後ろから検索することで、最新の該当データを取得できます。
| A列(点数) |
|---|
| 40 |
| 60 |
| 70 |
| 85 |
| 95 |
80点以上に最初に該当する位置を調べたい。
=XMATCH(80, A2:A6, 1)
4
👉 85点が最初に80点以上なので、4番目。
| A列(社員ID) | B列(氏名) | C列(部署) |
|---|---|---|
| 101 | 佐藤 | 営業 |
| 102 | 鈴木 | 総務 |
| 103 | 高橋 | 開発 |
| 104 | 田中 | 営業 |
社員ID 103 の「部署」を取得したい。
=XMATCH(103, A2:A5)
👉 結果:3
=INDEX(C2:C5, XMATCH(103, A2:A5))
開発
👉 VLOOKUP不要で柔軟な検索が可能。
=IFERROR(XMATCH("A999", A2:A5), "該当なし")
該当なし
👉 存在しないデータでも、エラー表示を防止できます。
XMATCH関数は非常に便利ですが、使用する際にはいくつか注意点があります。
検索範囲は、必ず一行または一列に限定する必要があります。
また、古いExcelバージョンでは使用できないため、ファイルの共有先の環境にも配慮が必要です。
MATCH関数との互換性を意識する場合は、使用前にバージョン確認を行うと安心です。
XMATCH関数は、従来のMATCH関数を大きく進化させた、現代のExcelに欠かせない検索関数です。
一致モードや検索モードを明示的に指定できるため、数式の可読性と安全性が向上します。
特に、XLOOKUP関数と組み合わせることで、複雑な検索処理もシンプルに実現できます。
これからExcelを使ったデータ処理を効率化したい方は、ぜひXMATCH関数を積極的に活用してみてください。