ExcelでMATCH関数を使っていて、「逆順に検索できたらいいのに」と感じたことはありませんか? データが増えるほど、検索の柔軟性が欲しくなりますよね。
XMATCH関数なら、その悩みをまるっと解決できます。 逆順検索やワイルドカード検索など、MATCHにはない機能が使えるんです。 この記事では、XMATCH関数の使い方を基本から実務活用まで解説します。
XMATCH関数とは?MATCHとの違いを比較表で整理
XMATCH関数は、検索範囲から指定した値を探し出し、その位置(何番目か)を数値で返す関数です。 読み方は「エックスマッチ」。「X」は Extended(拡張)を意味し、MATCH関数を強化した拡張版であることを示しています。 従来のMATCH関数の上位互換にあたります。
「位置を返す」というのがポイントです。 値そのものではなく、「上から何番目にあるか」を教えてくれます。 この位置情報をINDEX関数と組み合わせると、強力な表引きができます。
XMATCH関数の基本情報(対応バージョン)
XMATCH関数が使えるバージョンは以下のとおりです。
- Microsoft 365(Windows / Mac)
- Excel 2024(Windows / Mac)
- Excel 2021(Windows / Mac)
- Excel for the web(Web版)
Excel 2019以前では使えません。 その場合はMATCH関数で代用してください。
MATCHとXMATCHの違い一覧(比較表)
「MATCHと何が違うの?」という疑問に、比較表でお答えします。
| 比較項目 | MATCH | XMATCH |
|---|---|---|
| デフォルトの一致モード | 以下の最大値(1) | 完全一致(0) |
| 近似一致の並べ替え | 必須 | 不要 |
| 逆順検索 | できない | できる(search_mode=-1) |
| 255文字の制限 | あり | なし |
特に大きいのは「デフォルトが完全一致」になった点です。 MATCH関数は引数を省略すると近似一致になり、意図しない結果を返すことがありました。 XMATCHなら引数を省略しても完全一致で検索してくれます。
XMATCH関数の使い方:書式と引数
XMATCH関数の基本構文は次のとおりです。
=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])
各引数の意味と省略時の挙動
| 引数 | 必須 | 説明 | 省略時 |
|---|---|---|---|
| 検索値(lookup_value) | ○ | 探したい値 | — |
| 検索範囲(lookup_array) | ○ | 検索する1行または1列の範囲 | — |
| 一致モード(match_mode) | × | 一致の判定方法を指定 | 0(完全一致) |
| 検索モード(search_mode) | × | 検索する方向を指定 | 1(先頭から検索) |
第3・第4引数は省略可能です。 省略すると「先頭から完全一致で検索」という最もシンプルな動作になります。
一致モード4種の使い分け
一致モード(match_mode)は、検索値と範囲内の値をどう照合するかを決めます。 4種類あるので、用途に合わせて選びましょう。
完全一致(デフォルト・0)
最も基本的なモードです。 検索値と完全に一致するセルだけを探します。
たとえば、社員名簿から「佐藤」の位置を調べる場合はこうなります。
=XMATCH("佐藤", A2:A10)
一致モードを省略しても「0(完全一致)」になります。 見つからなければ #N/A エラーが返ります。
以下で一致(-1)/以上で一致(1)
数値データに対して「ぴったり一致する値がなければ、近い値で代用する」モードです。
- -1(以下の最大値): 検索値以下で最も大きい値の位置を返す
- 1(以上の最小値): 検索値以上で最も小さい値の位置を返す
たとえば、点数テーブルで85点のランクを調べたいとします。 テーブルに85がなくても、以下のように書けば80の位置を返してくれます。
=XMATCH(85, {60,70,80,90}, -1)
この式は「3」を返します。85以下の最大値は80で、3番目だからです。
MATCH関数の近似一致ではデータの並べ替えが必須でした。 XMATCHなら並べ替え不要で近似一致ができます。 これは地味ですが、実務では大きなメリットです。
ワイルドカード一致(2)の実用例
部分一致で検索したいときは、一致モード「2」を使います。 *(任意の文字列)と ?(任意の1文字)、~(ワイルドカード文字そのものを検索するエスケープ)が使えます。
たとえば、「田中」を含む名前を探す場合はこう書きます。
=XMATCH("*田中*", A2:A20, 2)
これで「田中太郎」「田中花子」など、「田中」を含む最初のセルの位置を返します。 商品名や部署名のあいまい検索に便利ですよ。
検索モード4種の使い分け
検索モード(search_mode)は、範囲をどの方向から探すかを決めます。
先頭から検索(デフォルト・1)
上から順に検索し、最初に見つかった位置を返します。 省略時はこのモードになるので、通常はそのままでOKです。
末尾から逆順検索(-1)の実務ユースケース
XMATCH関数の目玉機能ともいえるのが、逆順検索です。 search_mode に「-1」を指定すると、末尾から先頭に向かって検索します。
これが活躍するのは「追記型の台帳」です。 たとえば、日報や作業ログのように下へ追記していくシートがあるとします。 同じ担当者名が複数行にあるとき、最新(最後)のエントリの位置を取得できます。
=XMATCH("佐藤", A2:A100, 0, -1)
MATCH関数では逆順検索ができなかったため、回りくどい数式が必要でした。 XMATCHなら引数ひとつで解決です。
バイナリサーチ(2・-2)の使いどき
データが大量(数万行以上)で、すでに並べ替え済みの場合に使います。
- 2: 昇順ソート済みデータに対して二分探索
- -2: 降順ソート済みデータに対して二分探索
通常の検索より高速ですが、データが正しくソートされていないと誤った結果を返します。 少量データなら通常検索で十分なので、無理に使う必要はありません。
INDEX+XMATCHで表引きをもっと柔軟に
XMATCH関数の真価は、INDEX関数との組み合わせで発揮されます。
VLOOKUPより優れている理由
VLOOKUP関数は便利ですが、いくつかの制約があります。
- 検索列が範囲の左端にないと使えない
- 列番号を数値で指定するため、列の挿入でズレる
INDEX+XMATCHなら、これらの制約がありません。 検索列が右にあっても左にあっても自在に表引きできます。
さらに詳しく知りたい方は、VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイドもあわせてご覧ください。
なお、XLOOKUP関数が使える環境なら、XLOOKUPのほうがシンプルに書けます。 INDEX+XMATCHは「縦横同時検索」が必要なケースで特に威力を発揮します。
INDEX+XMATCHの実務サンプル
下の表から「商品名」と「月」を指定して売上を取得する例です。
| 4月 | 5月 | 6月 | |
|---|---|---|---|
| 商品A | 100 | 150 | 200 |
| 商品B | 80 | 120 | 160 |
| 商品C | 200 | 250 | 300 |
セルB3に商品名、C3に月名を入力しておくと、次の数式で交差セルの値を取得できます。
=INDEX(C6:E8, XMATCH(B3, B6:B8), XMATCH(C3, C5:E5))
ちょっとむずかしく見えますが、やっていることはシンプルです。
XMATCH(B3, B6:B8)→ 商品名の行番号を取得XMATCH(C3, C5:E5)→ 月名の列番号を取得INDEX→ 行と列が交差するセルの値を返す
このように、XMATCHを2つ使って縦横同時検索ができます。 VLOOKUPでは実現できない柔軟な表引きです。
よくあるエラーと対処法
#N/Aが出るケースと回避方法
XMATCH関数で最もよく見るエラーが #N/A です。 「一致する値が見つからない」ときに発生します。
主な原因は次の3つです。
- スペルミスや余分なスペース: 検索値と範囲内の値が微妙に違う
- データ型の不一致: 検索値が数値なのに範囲内が文字列として保存されている(またはその逆)
- 検索範囲の指定ミス: 意図した列と違う範囲を選んでいる
データ型の問題は見落としがちです。 セルの表示が同じでも、数値と文字列では一致しません。 数式バーで「’123」のようにシングルクォートがついていたら、文字列として保存されているサインです。
エラーを非表示にしたい場合は、IFERROR関数で囲みます。
=IFERROR(XMATCH("佐藤", A2:A10), "該当なし")
ただし、IFERRORで隠すとデータの問題に気づきにくくなります。 まずは原因を特定してから対処するのがおすすめです。
まとめ|XMATCHはMATCHの上位互換
XMATCH関数の使い方を振り返りましょう。
- デフォルトが完全一致なので、引数の指定ミスが起きにくい
- 逆順検索(search_mode=-1)で最新データの位置を簡単に取得できる
- 近似一致で並べ替え不要になり、手間が減った
- ワイルドカード一致で部分一致検索もカバー
- 255文字の制限がなくなり、長いテキストの検索にも対応
- INDEX関数と組み合わせれば、縦横同時検索が可能
MATCH関数を使っている方は、XMATCHに切り替えるだけで検索がグッと楽になりますよ。 対応バージョン(Microsoft 365 / Excel 2024 / Excel 2021)をお使いなら、ぜひ試してみてください。
