Googleスプレッドシートで「VLOOKUPだと左側を検索できない」「エラーのたびにIFERRORを書くのが面倒」と感じたことはありませんか?そんな悩みを解決するのがXLOOKUP関数です。2022年にGoogleスプレッドシートに追加され、VLOOKUPのほぼすべての弱点を解消した新しい検索関数です。この記事では全6引数の使い方から応用例まで、実例付きで徹底解説します。

XLOOKUP関数とは?

XLOOKUP関数は、Googleスプレッドシートで使える高機能な検索・参照関数です。従来のVLOOKUP関数・HLOOKUP関数の後継として設計されており、以下の点で大幅に進化しています。

  • 検索列の左側にある値も取得できる
  • 複数列をまとめて返せる
  • エラー時の表示を引数内で設定できる(IFERROORが不要)
  • 末尾からの逆順検索が可能
  • ワイルドカード(部分一致)検索に対応
  • 縦方向・横方向どちらの検索にも使える

XLOOKUP関数の書き方(構文)

=XLOOKUP(検索キー, 検索範囲, 結果の範囲, [見つからない場合の値], [一致モード], [検索モード])
引数 説明 省略
検索キー 検索したい値(例: E2, “東京”, 100) 必須
検索範囲 検索する単一の列または行(例: A2:A100) 必須
結果の範囲 返したい値がある列・行・複数列(例: B2:B100) 必須
見つからない場合の値 一致がないときに表示するテキスト(例: “該当なし”) 省略可(省略時は#N/Aエラー)
一致モード 0=完全一致(既定)、1=以上、-1=以下、2=ワイルドカード 省略可
検索モード 1=先頭から(既定)、-1=末尾から、2=昇順バイナリ、-2=降順バイナリ 省略可

基本的な使い方

社員IDから氏名を検索する最もシンプルな例:

=XLOOKUP(E2, A2:A100, B2:B100, "該当なし")

E2の社員IDをA列で検索し、一致したB列の氏名を返します。見つからない場合は「該当なし」と表示します。VLOOKUPであれば別途IFERRORが必要でしたが、XLOOKUPは第4引数に直接設定できます。

VLOOKUPとの違い

比較項目 VLOOKUP XLOOKUP
左方向への検索 ❌ 不可 ✅ 可能
複数列を一度に返す ❌ 1列のみ ✅ 複数列
見つからない場合の設定 △ IFERRORが必要 ✅ 第4引数で設定可
末尾からの逆順検索 ❌ 不可 ✅ 可能
ワイルドカード検索 △ 制限あり ✅ 一致モード2で対応
列番号の指定 必要(列を追加すると番号がずれる) 不要(返す範囲を直接指定)
横方向の検索 ❌ 不可(HLOOKUPが必要) ✅ 縦横両対応

応用例1:左方向への検索(VLOOKUPでは不可)

VLOOKUPは検索列より右側の値しか返せませんが、XLOOKUPは左右どちらの列でも返せます。

=XLOOKUP(E2, C2:C100, A2:A100, "該当なし")

C列(氏名)を検索して、A列(社員ID)を返す例です。VLOOKUPでは実現できない逆方向の検索が1行で書けます。

応用例2:複数列をまとめて返す

=XLOOKUP(E2, A2:A100, B2:D100, "該当なし")

結果の範囲をB2:D100と複数列にすると、氏名・部署・役職を1つの関数でまとめて取得できます。VLOOKUPでは列ごとに別々の関数が必要でしたが、XLOOKUPなら1つで完結します。

応用例3:末尾からの逆順検索(検索モード = -1)

同じIDや名前が複数行に存在する場合、最新(最後)のデータを取得したいときは検索モードに「-1」を指定します。

=XLOOKUP(E2, A2:A100, B2:B100, "該当なし", 0, -1)

第5引数(一致モード)を0(完全一致)にしたまま、第6引数(検索モード)を-1にすることで末尾から検索します。ログデータや履歴テーブルで最新レコードを取り出すときに便利です。

応用例4:ワイルドカード検索(一致モード = 2)

「〇〇を含む」「〇〇で始まる」などの部分一致検索は、一致モードに「2」を指定します。

=XLOOKUP("*東京*", A2:A100, B2:B100, "該当なし", 2)
ワイルドカード 意味
* 0文字以上の任意の文字列 “*東京*” → 東京を含む
? 任意の1文字 “東京?” → 東京都、東京区など
~ 直後の*や?をワイルドカードではなく文字として扱う “~*” → *そのもの

応用例5:複数条件での検索(ARRAYFORMULA と組み合わせ)

「部署が営業 かつ 役職が課長」のように複数条件で検索したい場合は、検索キーと検索範囲をそれぞれ文字列結合して疑似的な複合キーを作ります。

=XLOOKUP(F2&G2, A2:A100&B2:B100, C2:C100, "該当なし")

F2に「営業」、G2に「課長」が入っている場合、A列とB列を連結した複合キーで検索します。Ctrl+Shift+Enterで配列数式として入力する必要はなく、そのままEnterで動作します(スプレッドシートの場合)。

よくあるエラーと対処法

エラー 原因 対処法
#N/A 検索値が見つからない 第4引数に見つからない場合の値を設定する
#VALUE! 検索範囲と結果の範囲のサイズが異なる 行数・列数を揃える
#REF! 範囲の指定が正しくない セル範囲の参照を見直す
0が返る 一致したセルが空白 見つからない場合の値で””を設定するか、IF関数と組み合わせる

まとめ

XLOOKUPはVLOOKUPのほぼすべての弱点を解消した関数です。特に「左方向の検索ができない」「IFERRORが毎回必要」というVLOOKUPの不満を解決してくれます。Googleスプレッドシートでは2022年から利用可能で、現在は完全にサポートされています。

これからGoogleスプレッドシートで検索関数を使う場合は、VLOOKUPではなくXLOOKUPを使うことをおすすめします。まずは基本の3引数(検索キー・検索範囲・結果の範囲)から始めて、慣れたら一致モードや検索モードも活用してみましょう。

ABOUT ME
IT解決チャンネル編集部
ExcelやWord、Windows、Googleスプレッドシートなど、ビジネスで使うITツールの使い方を初心者にもわかりやすく解説しています。関数の使い方から実務で役立つ応用テクニックまで、画像付きでていねいに紹介。パソコン操作で困ったときの頼れる情報源を目指しています。