GoogleスプレッドシートでXLOOKUPを使う方法|VLOOKUPより便利な新関数を徹底解説
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引数(検索キー・検索範囲・結果の範囲)から始めて、慣れたら一致モードや検索モードも活用してみましょう。