【Excel】XLOOKUP関数とINDEX・(X)MATCH関数の使い分け
当校ではビジネスシーンでよく使用される関数の使い方を学習できる【Excel講座 実務で使える関数編】を開講しています。
本講座では、代表的な検索関数として、Excel2021より搭載された〈XLOOKUP関数〉と、〈INDEX関数・MATCH関数〉を単元別に取り扱っています。
先日、こちらを受講されている方より、両者はどのような場面で使い分けをするのかご質問がありました。
そこで、今回は両者の特徴と違いをご紹介いたします。
●XLOOKUP関数
表データから、値が一致した行や列ごとのデータを返す関数です。
従来の〈VLOOKUP関数〉のように検索値を範囲の左端の列として指定する必要もなく、1列ごとではなく複数列に対応して参照できるなど、〈VLOOKUP関数〉に比べ圧倒的に自由度が高い関数です。また、一致モードもユーザーの用途に合わせて変更できる点や、エラー時の表示処理も組み込める点から検索関数のニューノーマルになりつつあります。(※一致モードにつきましては2025年10月4日の記事もご参照ください)
●INDEX・(X)MATCH関数
「INDEX関数」:セル範囲の中から、指定した行・列番号の交点にあるセルの値を表示する関数です。
「(X)MATCH関数」:指定した値が範囲内の何番目にあるかを検索する関数です。
Excel2021から従来の〈MATCH関数〉をより強化した〈XMATCH関数〉が搭載されました。
最も異なるのは照合する際のデフォルトが、MATCH関数は「以下で近い値」でしたが、XMATCH関数は「完全一致」になった点です。
INDEX関数の第2引数である行番号と、第3引数である列番号を(X)MATCH関数をネストすることで、参照する項目名を変更しても求めることができます。そのため、INDEX・(X)MATCH関数は組み合わせて使用します。
●スピル機能との相性
Excel2021より搭載されたスピル機能によって、複数行や列をまとめて参照することで複数のセルに自動的に数式を入力できるようになりました。
この機能はこの記事で紹介するXLOOKUP関数、INDEX・(X)MATCH関数どちらも相性が良く、掛け合わせて使うのがおすすめです。
しかしながら、両者には明確な違いがあり、これこそが使い分けるべき理由の一つでもあります。
XLOOKUP関数は検索値にセル単体(複合参照)、もしくは、セル範囲(絶対参照)を指定しますが、いずれも行方向のみか列方向どちらか一方しか参照できません。これは検索値がセル単体であればそのセル番地の行しか、セル範囲であれば数式を入力した列しか、Excel上では出力範囲を判定できないからです。



●INDEX・(X)MATCH関数であれば表項目の変更に対応できる
XLOOKUP関数は戻り範囲として、単列もしくは、検索項目と表項目の順番が同一であればスピル機能を利用して隣接する複数列を指定することができますが、バラバラの場合は数式をそれぞれに入力する必要があります。また、表項目を変更、修正した場合もその都度、数式を入力し直す必要があります。
一方で、INDEX・(X)MATCH関数は行方向、列方向の項目名に一致した値を表示するため、表項目を修正すれば表示する値も連動して変更されます。

●まとめ
両者の使い分けは以下のようになります。
・検索値に対して、行か列どちらかに検索データを表示させる場合→XLOOKUP関数
・行、列両方を参照してデータを取得し、表項目の変更に柔軟に対応させたい場合→INDEX・(X)MATCH関数
こちらはあくまで参考ですので、使用するファイル環境やデータ特性によって使い分けてみて下さい。
本講座では、代表的な検索関数として、Excel2021より搭載された〈XLOOKUP関数〉と、〈INDEX関数・MATCH関数〉を単元別に取り扱っています。
先日、こちらを受講されている方より、両者はどのような場面で使い分けをするのかご質問がありました。
そこで、今回は両者の特徴と違いをご紹介いたします。
●XLOOKUP関数
表データから、値が一致した行や列ごとのデータを返す関数です。
| =XLOOKUP(検索値,検索範囲,戻り範囲,[見つからない場合],[一致モード],[検索モード] |
●INDEX・(X)MATCH関数
「INDEX関数」:セル範囲の中から、指定した行・列番号の交点にあるセルの値を表示する関数です。
| =INDEX(配列,行番号,[列番号]) ※配列形式 |
Excel2021から従来の〈MATCH関数〉をより強化した〈XMATCH関数〉が搭載されました。
最も異なるのは照合する際のデフォルトが、MATCH関数は「以下で近い値」でしたが、XMATCH関数は「完全一致」になった点です。
| =MATCH(検索値,検査範囲,[照合の種類]) =XMATCH(検索値, 検索範囲, [一致モード], [検索モード]) |
●スピル機能との相性
Excel2021より搭載されたスピル機能によって、複数行や列をまとめて参照することで複数のセルに自動的に数式を入力できるようになりました。
この機能はこの記事で紹介するXLOOKUP関数、INDEX・(X)MATCH関数どちらも相性が良く、掛け合わせて使うのがおすすめです。
しかしながら、両者には明確な違いがあり、これこそが使い分けるべき理由の一つでもあります。
| XLOOKUP関数 | 行方向(検索値)、列方向(戻り範囲)同時のスピルは不可 |
| INDEX・(X)MATCH関数 | 行、列両方向同時のスピル可能 |



●INDEX・(X)MATCH関数であれば表項目の変更に対応できる
XLOOKUP関数は戻り範囲として、単列もしくは、検索項目と表項目の順番が同一であればスピル機能を利用して隣接する複数列を指定することができますが、バラバラの場合は数式をそれぞれに入力する必要があります。また、表項目を変更、修正した場合もその都度、数式を入力し直す必要があります。
一方で、INDEX・(X)MATCH関数は行方向、列方向の項目名に一致した値を表示するため、表項目を修正すれば表示する値も連動して変更されます。

●まとめ
両者の使い分けは以下のようになります。
・検索値に対して、行か列どちらかに検索データを表示させる場合→XLOOKUP関数
・行、列両方を参照してデータを取得し、表項目の変更に柔軟に対応させたい場合→INDEX・(X)MATCH関数
こちらはあくまで参考ですので、使用するファイル環境やデータ特性によって使い分けてみて下さい。








