- 作成日 : 2025年8月25日
XMATCH関数の使い方:高度な検索を簡単に実現する方法
XMATCH関数は、指定した値がリストや表の中で何番目にあるかを調べるExcelの検索関数です。従来のMATCH関数と似ていますが、部分一致やワイルドカード、後ろからの検索など、より柔軟な検索機能が追加されています。
大規模なデータでも正確かつ高速に検索できるため、VLOOKUPの代替としても活用されています。本記事では、XMATCH関数の基本的な使い方から、実務で役立つ応用例、よくあるエラーの対処法まで、初心者にもわかりやすく紹介します。
目次
XMATCH関数の基本的な使い方
XMATCH関数とは
XMATCH関数は、Excel 365およびExcel 2021で利用可能な動的配列関数の一つで、指定した検索値が配列内のどの位置にあるかを返します。MATCH関数の後継として設計され、より直感的な構文と強力な機能を備えています。
従来のMATCH関数との大きな違いは、検索モードの柔軟性です。完全一致、近似一致、ワイルドカード検索、正規表現風の検索まで、一つの関数で対応できます。また、検索方向も自由に指定でき、昇順・降順のソートも不要です。
なお、XMATCH関数は基本的に正規表現に対応していないものの、Insider Beta チャネル向けの新しいバージョンでは正規表現を使用できます。
基本構文と引数の詳細
XMATCH関数の構文は以下のとおりです。
=XMATCH(検索値, 検索配列, [一致モード], [検索モード])
各引数について詳しく説明します。
検索値:検索したい値を指定します。数値、文字列、論理値、セル参照など、あらゆるデータ型に対応します。
検索配列:検索対象となる配列またはセル範囲を指定します。一次元配列である必要があります。
- 0:完全一致(既定値)
- -1:完全一致または次に小さい値
- 1:完全一致または次に大きい値
- 2:ワイルドカード文字を使用した一致
- 3:正規表現を使用した一致(新しいバージョンで追加された新機能)
- 1:先頭から末尾へ検索(既定値)
- -1:末尾から先頭へ検索
- 2:昇順で並べ替えられた配列でバイナリ検索
- -2:降順で並べ替えられた配列でバイナリ検索
基本的な使用例
商品リストから特定の商品の位置を検索する例を見てみましょう。
A列に商品名がリストアップされている場合:
=XMATCH(“りんご”, A:A)
このシンプルな構文で、「りんご」が何行目にあるかを返します。
価格表から特定の価格帯を検索する場合:
=XMATCH(15000, B:B, 1)
15000円ちょうど、またはそれより大きい最小の価格の位置を返します。
大文字小文字を区別しない検索:
=XMATCH(“apple”, A:A, 0)
XMATCHは既定で大文字小文字を区別しないため、”Apple”と”APPLE”は同一視されます。厳密な比較が必要な場合はEXACT関数を併用してください。
MATCH関数との違いを理解する
従来のMATCH関数と比較して、XMATCH関数の優位性を具体例で示します。
降順データでの検索:
MATCH関数: 事前のソートが必要
XMATCH関数: =XMATCH(検索値, 範囲, 0, -2)
最後に出現する値の検索:
MATCH関数: 配列数式が必要
XMATCH関数: =XMATCH(検索値, 範囲, 0, -1)
ワイルドカード検索:
MATCH関数: 限定的なサポート
XMATCH関数: =XMATCH(“製品*”, 範囲, 2)
XMATCH関数の実践的な利用シーン
動的なVLOOKUP代替としての活用
XMATCH関数とINDEX関数を組み合わせることで、VLOOKUPの制限を超えた柔軟な検索が可能になります。
顧客データベースから情報を抽出:
=INDEX(データ全体, XMATCH(顧客ID, ID列), XMATCH(項目名, ヘッダー行))
この組み合わせにより、列の順序に依存しない検索が実現できます。
複数条件での検索も可能です。
=INDEX(結果列, XMATCH(条件1&条件2, 列1&列2))
在庫管理システムでの応用
在庫の閾値管理において、XMATCH関数は重要な役割を果たします。
発注点に達した商品の特定:
=XMATCH(TRUE, 在庫数量<発注点, 0)
在庫回転率の高い商品から優先的に処理:
=INDEX(商品名, XMATCH(LARGE(回転率, n), 回転率, 0))
期限切れが近い商品の検出:
=XMATCH(TODAY()+30, 賞味期限列, 1)
成績処理での順位付け
学生の成績管理において、XMATCH関数を使った高度な分析が可能です。
特定の点数以上の学生数をカウント:
=COUNTA(成績範囲) – XMATCH(基準点, SORT(成績範囲), -1) + 1
成績分布の四分位点を特定:
第1四分位: =INDEX(SORT(成績), XMATCH(25%, SEQUENCE(COUNT(成績))/COUNT(成績), 1))
クラス内での相対的な位置を確認:
=XMATCH(個人成績, SORT(クラス成績, , -1), -1)
時系列データの分析
売上データや株価データなど、時系列データの分析にもXMATCH関数が活用できます。
特定の売上目標を初めて達成した日の特定:
=INDEX(日付列, XMATCH(目標値, 累計売上, 1))
前回の最高値更新からの経過日数:
=TODAY() – INDEX(日付列, XMATCH(MAX(値列), 値列, 0, -1))
移動平均線のクロスポイント検出:
=XMATCH(TRUE, 短期MA>長期MA, 0)
XMATCH関数の応用・他関数との組み合わせ
FILTER関数との連携
動的配列関数同士の組み合わせにより、より高度なデータ抽出が可能です。
条件に一致する最初のn件を抽出:
=INDEX(FILTER(データ, 条件), SEQUENCE(n))
特定位置のデータのみフィルタリング:
=FILTER(データ, SEQUENCE(ROWS(データ))=XMATCH(検索値, キー列))
XLOOKUP関数との使い分け
XLOOKUPとXMATCHの適切な使い分けにより、効率的なデータ処理が実現できます。
値を取得したい場合:
=XLOOKUP(検索値, 検索列, 結果列)
位置情報が必要な場合:
=XMATCH(検索値, 検索列)
複数の結果を取得する場合の組み合わせ:
=INDEX(データ範囲, XMATCH(検索値, キー列), SEQUENCE(1, 列数))
条件付き集計での活用
SUMIFS関数などと組み合わせて、動的な集計範囲を設定できます。
特定期間の売上集計:
開始位置: =XMATCH(開始日, 日付列, 1)
終了位置: =XMATCH(終了日, 日付列, -1)
合計: =SUM(INDEX(売上列, 開始位置):INDEX(売上列, 終了位置))
カテゴリ別の動的集計:
=SUMIFS(金額列, カテゴリ列,
INDEX(カテゴリ一覧, XMATCH(TRUE, カテゴリ別売上>基準値, 0)))
配列数式での高度な活用
XMATCH関数を配列数式として使用することで、複雑な検索ロジックを実装できます。
複数の検索値を一度に処理:
=XMATCH(検索値配列, 検索範囲)
条件を満たす全ての位置を取得:
=FILTER(SEQUENCE(ROWS(範囲)), 範囲=条件値)
最も近い値の検索(絶対値差が最小):
=XMATCH(MIN(ABS(範囲-目標値)), ABS(範囲-目標値), 0)
XMATCH関数のよくあるエラーと対処法
#N/Aエラーの解決
#N/Aエラーは、検索値が見つからない場合に発生するエラーです。
IFERROR関数でのエラーハンドリング:
=IFERROR(XMATCH(検索値, 範囲), “見つかりません”)
IFNAを使用したより具体的な対処:
=IFNA(XMATCH(検索値, 範囲), 0)
検索前の存在チェック:
=IF(COUNTIF(範囲, 検索値)>0, XMATCH(検索値, 範囲), “該当なし”)
#VALUE!エラーへの対応
引数の型が不適切な場合に発生します。
データ型の変換を行う:
=XMATCH(VALUE(検索値), 数値範囲)
=XMATCH(TEXT(検索値, “0”), 文字列範囲)
配列の次元を確認:
=XMATCH(検索値, INDEX(二次元配列, , 列番号))
パフォーマンスの最適化
大規模データでの検索速度を向上させる方法を紹介します。
ソート済みデータでのバイナリ検索:
=XMATCH(検索値, ソート済み範囲, 0, 2)
検索範囲の限定:
=XMATCH(検索値, OFFSET(開始セル, 0, 0, 実データ数, 1))
計算の効率化:
位置を変数に保存: =LET(位置, XMATCH(…), IF(位置>0, INDEX(…, 位置), “”))
特殊なケースへの対処
空白セルや特殊文字を含むデータでの注意点を説明します。
空白を無視した検索:
=XMATCH(検索値, FILTER(範囲, 範囲<>””))
前後の空白を除去:
=XMATCH(TRIM(検索値), TRIM(範囲))
大文字小文字を厳密に区別する場合:
=XMATCH(TRUE, EXACT(検索値, 範囲), 0)
XMATCH関数で柔軟かつ高速な検索処理を実現
XMATCH関数は、Excel 365および2021で使用可能な動的配列対応の検索関数で、MATCH関数を拡張した高機能な構文を備えています。
完全一致、近似一致、ワイルドカード検索、検索方向指定などに対応し、INDEXやFILTERと組み合わせることで柔軟なデータ抽出が可能になります。
VLOOKUPの代替や順位判定、在庫管理、時系列分析にも応用でき、IFERRORやLETとの併用により効率的な数式設計も実現できます。基本的に正規表現には対応していませんが、部分一致などで実務ニーズに対応します。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
MAXIFS関数とは?複数の条件で最大値を抽出する方法
MAXIFS関数(読み方:マックスイフス関数)は、複数の条件を満たすデータの中から最大値を抽出できる便利なExcel関数です。 従来のMAX関数や、MAXとIFを組み合わせた配列数式よりもシンプルに記述でき、直感的に使えるのが特徴です。 た…
詳しくみるエクセルグラフの「凡例」とは?意味・表示・編集方法を解説
この記事では、Excel初心者の方や、改めてExcelの使い方を学びたい方に向けて、グラフにおける凡例の基本的な意味から、表示・非表示の切り替え、位置や書式、項目名の編集方法、さらには少し応用的なテクニックまで、網羅的に解説します。この記事…
詳しくみるSUMPRODUCT関数の使い方!複数条件の指定やエラー回避を解説
SUMPRODUCT関数(読み方:サムプロダクト関数)は、複数の配列の要素を掛け合わせ、その合計を求めるExcelの強力な計算関数です。 単純な掛け算だけでなく、複数条件の集計や加重平均など、複雑な分析にも活用できます。 この記事では、SU…
詳しくみるExcel LOG関数とは?使い方や計算方法、自然対数・常用対数まで
ExcelのLOG関数(ログ関数)は、特定の底に対する対数を求めるための関数で、「何を何回掛ければ目的の数になるか」を効率的に導き出してくれます。常用対数(底10)や自然対数(底e)にも対応でき、データの変化率分析や指数関数的な現象の理解に…
詳しくみるエクセルの検索機能の使い方をわかりやすく解説
エクセルは、膨大なデータを扱うツールとして非常に便利ですが、その中から必要な情報を素早く見つけ出すためには検索機能を使いこなすことが重要です。この記事では、エクセルの検索機能の基本的な使い方から、便利なショートカットや実際の利用シーン、検索…
詳しくみるエクセルのプルダウンの作り方とは?連動・追加・自動入力の方法まで解説
エクセルのプルダウン機能は、データ入力の効率を高め、ミスを減少させるための強力なツールです。プルダウンリストを利用することで、ユーザーは簡単に事前定義された選択肢から選ぶことができ、作業のスピードが向上します。本記事では、プルダウンの基本的…
詳しくみる