ExcelのXMATCH関数の使い方|MATCHとの違いを解説

スポンサーリンク

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と何が違うの?」という疑問に、比較表でお答えします。

比較項目MATCHXMATCH
デフォルトの一致モード以下の最大値(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月
商品A100150200
商品B80120160
商品C200250300

セルB3に商品名、C3に月名を入力しておくと、次の数式で交差セルの値を取得できます。

=INDEX(C6:E8, XMATCH(B3, B6:B8), XMATCH(C3, C5:E5))

ちょっとむずかしく見えますが、やっていることはシンプルです。

  1. XMATCH(B3, B6:B8) → 商品名の行番号を取得
  2. XMATCH(C3, C5:E5) → 月名の列番号を取得
  3. 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)をお使いなら、ぜひ試してみてください。

タイトルとURLをコピーしました