• 作成日 : 2025年9月17日

スプレッドシートのXLOOKUP関数とは?使い方や複数条件、VLOOKUPとの違いを解説

大量のデータから必要な情報を素早く探し出したいとき、Googleスプレッドシートの XLOOKUP関数 が便利です。

2022年に導入された新しい検索関数で、従来のVLOOKUPやINDEX/MATCHの制限を解消し、左右両方向への検索やエラー処理を標準で備えています。

この記事では、XLOOKUP関数の基本構文から複数条件での検索方法、VLOOKUPなど他の関数との組み合わせまで、実務ですぐに役立つ使い方をわかりやすく解説します。

目次

スプレッドシートのXLOOKUP関数とは?基本構文と動作原理

XLOOKUP関数は、指定した検索値に基づいて配列から対応する値を返す検索関数で、縦横両方向の検索が可能かつエラー処理も組み込まれた万能型の検索関数です。従来のVLOOKUPやHLOOKUPの上位互換として設計され、より直感的で柔軟な検索操作を実現します。

参考:XLOOKUP 関数 – Google ドキュメント エディタ ヘルプ

XLOOKUP関数の基本構文を理解する

XLOOKUP関数の構文は以下のとおりです。

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

各引数の詳細説明
  • 検索値:探したい値(数値、文字列、日付など)
  • 検索範囲:検索値を探す範囲(1列または1行)
  • 戻り範囲:結果として返す値が含まれる範囲
  • 見つからない場合(省略可):一致が見つからない時に返す値
  • 一致モード(省略可):完全一致、近似一致などの指定
  • 検索モード(省略可):検索の方向(先頭から、末尾からなど)

なぜXLOOKUP関数が革新的なのか

XLOOKUP関数の最大の特徴は、左方向への検索が可能で、複数列や複数セルの結果を返すと自動的に隣接セルに展開される点です。これにより、データの配置に制約されることなく、自由度の高い検索処理が実現できます。また、エラー処理が標準装備されており、#N/Aエラーの代わりに任意の値を返せるため、より見やすく使いやすいスプレッドシートを作成できます。

スプレッドシートのXLOOKUP関数の使い方

XLOOKUP関数を実際に使用する際は、まず基本的な完全一致検索から始め、徐々に高度な機能を活用していくことが効果的です。具体的な使用例を通じて、段階的に理解を深めていきましょう。

STEP1:基本的な検索処理を実装する

最もシンプルなXLOOKUP関数の使用例から始めます。

商品コードから商品名を検索する場合の実装方法:

=XLOOKUP(“P001”, A2:A100, B2:B100)

この数式では、

  1. “P001″という商品コードを検索値として指定
  2. A2:A100の範囲から検索値を探す
  3. 見つかった行に対応するB2:B100の値を返す

STEP2:エラー処理を組み込む

検索値が見つからない場合のエラー処理は、第4引数を使用することで簡単に実装できます。これにより、#N/Aエラーの代わりに分かりやすいメッセージを表示できます。

=XLOOKUP(D2, A:A, B:B, “該当なし”)

エラー処理のパターン例
  • 空白を返す:””を指定
  • デフォルト値を返す:0や”-“を指定
  • カスタムメッセージ:”データが見つかりません”など

STEP3:複数列のデータを一度に取得する

XLOOKUP関数の強力な機能の一つは、複数列のデータを同時に取得できることです。戻り範囲に複数列を指定することで実現できます。

=XLOOKUP(E2, A2:A50, B2:D50)

この場合、B列からD列までの3列分のデータが横に展開されて返されます。動的配列機能により、隣接するセルに自動的に結果が表示されます。

XLOOKUP関数の利用シーンと実務での活用例

XLOOKUP関数は、売上分析、在庫管理、顧客データベースの検索など、様々なビジネスシーンで活用できます。具体的な利用シーンと実装方法を詳しく見ていきましょう。

売上データの分析での活用

売上レポートで商品IDから詳細情報を引き出す場合、XLOOKUP関数を使用することで効率的にデータを統合できます。

例えば、売上トランザクションデータから商品マスターの情報を参照する際は下記のようになります。

=XLOOKUP(売上!A2, 商品マスター!A:A, 商品マスター!B:E)

この数式により、商品名、単価、カテゴリー、在庫数などの情報を一度に取得できます。

人事データベースでの従業員情報検索

従業員番号から個人情報を検索する際、XLOOKUP関数を使用すれば、部署、役職、入社日などの情報を効率的に抽出できます。データが更新されても、参照先が自動的に更新されるため、メンテナンスも容易です。

活用のポイント
  • 社員番号を検索キーとして使用
  • 必要な情報のみを選択的に取得
  • 部署異動などの変更も自動反映

在庫管理システムでの在庫照会

リアルタイムの在庫数を確認する際、XLOOKUP関数で商品コードから現在庫数を瞬時に検索できます。複数倉庫のデータを統合する場合も、入れ子構造で対応可能です。

XLOOKUP関数とVLOOKUP関数との違いを徹底比較

XLOOKUP関数はVLOOKUP関数の上位互換として設計されており、より柔軟で使いやすい機能を多数備えています。両者の違いを理解することで、適切な関数選択が可能になります。

検索方向の制限における決定的な違い

VLOOKUP関数は、検索列より右側の列からしかデータを取得できません。一方、XLOOKUP関数は左右どちらの方向でも自由に検索できます。

// VLOOKUP:右方向のみ

=VLOOKUP(A2, B:D, 2, FALSE)  // B列で検索、C列を返す

// XLOOKUP:全方向対応

=XLOOKUP(A2, C:C, B:B)  // C列で検索、B列を返す(左方向)

エラー処理機能の違い

VLOOKUP関数では別途IFERROR関数でエラー処理が必要ですが、XLOOKUP関数は標準でエラー処理機能を内蔵しています。 これにより、数式がシンプルになり、可読性が向上します。

// VLOOKUP + IFERROR

=IFERROR(VLOOKUP(A2, B:C, 2, FALSE), “見つかりません”)

// XLOOKUP(エラー処理込み)

=XLOOKUP(A2, B:B, C:C, “見つかりません”)

XLOOKUP関数で複数条件を指定する方法

複数の条件を組み合わせた検索は、XLOOKUP関数と配列数式を組み合わせることで実現できます。実務では単一条件では不十分な場合が多いため、この技術は非常に重要です。

連結による複数条件の実装

最も簡単な方法は、検索条件を文字列として連結することです。例えば、

部署と役職の両方で検索する場合:

=XLOOKUP(G2&H2, ARRAYFORMULA(A2:A100&B2:B100), C2:C100)

この方法のポイント
  • &演算子で条件を連結
  • 検索範囲も同様に連結
  • 文字列型のデータに最適

配列数式を使った高度な複数条件検索

より複雑な条件の場合、配列数式とXLOOKUP関数を組み合わせて使用します。数値や日付の範囲条件などにも対応可能です。

=XLOOKUP(1, (A2:A100=条件1)*(B2:B100=条件2), C2:C100)

この数式では、両方の条件を満たす行を検索し、対応する値を返します。論理積(AND条件)だけでなく、論理和(OR条件)も実装可能です。

FILTER関数との組み合わせによる複数条件処理

複数の結果を返す必要がある場合は、XLOOKUP関数とFILTER関数を組み合わせます。

=FILTER(XLOOKUP(A2:A10, マスター!A:A, マスター!B:D), 条件範囲=条件値)

XLOOKUP関数の一致モードの使い方

XLOOKUP関数の一致モードを適切に設定することで、完全一致だけでなく近似一致や部分一致など、様々な検索パターンに対応できます。第5引数で指定する一致モードの詳細を解説します。

一致モードの種類と特徴

XLOOKUP関数で使用できる一致モードは以下のとおりです。

モード説明使用例
完全一致0検索値と完全に一致する値を検索(デフォルト)商品コード検索
完全一致または次に小さい値-1完全一致がない場合、次に小さい値を返す税率テーブル参照
完全一致または次に大きい値1完全一致がない場合、次に大きい値を返す割引率の適用
ワイルドカード一致2*や?を使った部分一致検索部分的な名前検索

近似一致を使った範囲検索の実装

売上金額に応じた手数料率を求めるような場合、近似一致モードが有効です。以下の例では、売上額に応じた段階的な手数料率を取得します。

=XLOOKUP(売上額, 金額下限範囲, 手数料率範囲, , -1)

この設定により、売上額以下で最も近い金額下限に対応する手数料率が返されます。

ワイルドカード一致での柔軟な検索

部分一致検索が必要な場合、ワイルドカードモードを使用します。

=XLOOKUP(“*” & 検索文字 & “*”, 名前範囲, データ範囲, “該当なし”, 2)

ワイルドカードの使い方
  • *:任意の文字列(0文字以上)
  • ?:任意の1文字
  • 前方一致:検索文字*
  • 後方一致:*検索文字

XLOOKUP関数と組み合わせると便利な関数

XLOOKUP関数を他の関数と組み合わせることで、より高度なデータ処理が可能になります。実務で特に有用な組み合わせパターンを紹介します。

SUMIF/SUMIFSとの組み合わせで条件付き集計

XLOOKUP関数で取得した範囲に対して、条件付き集計を行う場合:

=SUMIF(XLOOKUP(検索値, 検索範囲, 戻り範囲), “>0”)

この組み合わせにより、動的に範囲を特定して集計処理を実行できます。

ARRAYFORMULA関数での一括処理

複数の検索値に対して一度にXLOOKUP処理を実行する場合、ARRAYFORMULA関数との組み合わせが効果的です。

=ARRAYFORMULA(XLOOKUP(A2:A100, マスター!A:A, マスター!B:B, “”))

これにより、100行分の検索を一つの数式で処理できます。

UNIQUE関数とCOUNTIFでの重複チェック

データの整合性チェックにXLOOKUP関数を活用:

=COUNTIF(XLOOKUP(UNIQUE(A:A), B:B, C:C), “>1”)

IFS関数との条件分岐処理

複雑な条件分岐を伴う検索処理:

=IFS(

条件1, XLOOKUP(値1, 範囲1, 戻り1),

条件2, XLOOKUP(値2, 範囲2, 戻り2),

TRUE, “デフォルト値”)

INDIRECT関数で動的な範囲指定

シート名や範囲を動的に変更する場合:

=XLOOKUP(A2, INDIRECT(シート名&”!A:A”), INDIRECT(シート名&”!B:B”))

XLOOKUP関数のトラブルシューティング

よくあるエラーと対処法

XLOOKUP関数使用時に発生する一般的なエラーとその解決方法を理解することで、効率的な問題解決が可能です。

エラーの種類と対処法
  • #NAME?エラー:関数名の誤り、Googleスプレッドシートのバージョン確認
  • #VALUE!エラー:範囲のサイズ不一致、検索範囲と戻り範囲の行数/列数を確認
  • #REF!エラー:参照範囲の削除、範囲指定を見直す
  • #SPILL!エラー:結果の展開先に既存データ、空きスペースを確保

大量データでのパフォーマンスを改善する方法

大規模なデータを扱う場合、XLOOKUPの処理が重くなることがあります。以下のポイントを意識することで、スプレッドシート全体のパフォーマンスを安定させられます。

  1. 範囲を限定する:
    A:A のように列全体を参照すると無駄な計算が発生します。A2:A1000 のように必要な範囲に絞りましょう。
  2. 計算の最適化:
    NOW関数やRAND関数などの揮発性関数と組み合わせると再計算が頻発します。極力避けると動作が安定します。
  3. 検索モードの活用:
    ソート済みデータを使う場合、検索モードを適切に指定することで処理が効率化されます。
  4. キャッシュの活用:
    同じ検索を繰り返す場合は、結果を別セルに保存し、その値を参照すると余計な再計算を防げます。

XLOOKUP関数を活用して効率的なデータ管理をしよう

XLOOKUP関数は、Googleスプレッドシートでの検索作業を大幅に効率化できる便利な関数です。左右両方向への検索や柔軟な一致モード、標準のエラー処理機能により、従来のVLOOKUPでは実現しにくかった処理もスムーズに行えます。

さらに複数条件検索や他の関数との組み合わせによって、売上分析・在庫管理・人事データ管理など幅広い業務に応用可能です。基本操作を押さえたうえで、徐々に高度な機能を取り入れることで、より柔軟で保守しやすいスプレッドシートを構築できます。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事