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