スプレッドシートのXLOOKUP関数の使い方|VLOOKUPとの違いも解説

スポンサーリンク

VLOOKUPで「左側の列が取れない…」「毎回IFERRORを書くのが面倒」と感じたことはありませんか?

データの列順が変わるたびに数式を修正したり、エラー対策のためにネストを深くしたりと、VLOOKUPの限界にぶつかっている方は多いと思います。

そんな悩みを一気に解決してくれるのが XLOOKUP関数(エックスルックアップ) です。2022年9月からGoogleスプレッドシートでも使えるようになり、今では実務でどんどん活用されています。この記事では、XLOOKUPの基本構文から実践的な応用例・エラー対処まで、サンプルつきで解説します。


XLOOKUP関数とは?

XLOOKUP関数は、指定した範囲から値を検索し、対応するデータを返す関数です。読み方は「エックスルックアップ」。X は「eXtended(拡張された)」を意味しており、従来のVLOOKUP・HLOOKUPの弱点を克服するために設計されました。

Googleスプレッドシートには2022年9月頃に追加されたため、比較的新しい関数ですが、覚えれば VLOOKUP の出番がほぼなくなります。

XLOOKUPでできること

  • 縦方向・横方向の両方を1つの関数で検索できる
  • 検索列の左側にあるデータも取得できる(VLOOKUPでは不可)
  • 見つからない場合の表示値を関数内で直接指定できる
  • 複数列・複数行をまとめて返せる

XLOOKUP関数の書き方(構文と引数)

基本構文

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

引数が6つあるように見えますが、最初の3つだけで基本的な検索はできます。4〜6番目はオプションなので、最初は気にしなくて大丈夫です。

引数の説明

引数必須/任意説明
検索キー必須検索したい値(セル参照・文字列・数値など)
検索範囲必須検索キーを探す列または行の範囲
結果の範囲必須返したいデータが入っている列または行の範囲
見つからない場合の値任意一致しない場合に返す値(省略時は #N/A
一致モード任意0=完全一致(既定)、-1=次に小さい値、1=次に大きい値、2=ワイルドカード
検索モード任意1=先頭から検索(既定)、-1=末尾から検索

基本的な使い方

縦方向の検索(基本例)

まずは一番よく使う「縦方向の検索」から見てみましょう。

たとえば、下のような商品マスタがあるとします。

01 data sample table

E1セルに「A002」と入力されているとき、F1セルで商品名を取得するには次のように書きます。

=XLOOKUP(E1, A:A, B:B)
02 formula xlookup basic

(P)結論: これだけで「みかん」が返ってきます。

(R)理由: 第1引数で検索キー(E1)を、第2引数で検索範囲(A列)を、第3引数で返したい列(B列)を指定しているからです。

(E)具体例: 単価を取りたい場合は第3引数をC列に変えるだけです。

=XLOOKUP(E1, A:A, C:C)
03 result xlookup basic

(P)まとめ: VLOOKUPと違い、「何列目を返すか」という列番号を数える必要がないのがポイントです。列が増減しても数式を修正しなくていいので、実務でとても楽になります。

横方向の検索

XLOOKUPは横方向のデータにも対応しています。HLOOKUPを使っていた場面をXLOOKUP1本で代替できます。

 A列B列C列D列
1行目(月)1月2月3月4月
2行目(売上)12095180210

「3月」の売上を取得するには次のように書きます。

=XLOOKUP("3月", 1:1, 2:2)

縦でも横でも同じ書き方で使えるのがXLOOKUPの強みです。


実践的な使い方・応用例

逆方向(右から左)の検索

VLOOKUPで困る場面の代表例が「検索キーより左の列のデータを取りたい」ケースです。VLOOKUPは検索列の右側しか取れませんが、XLOOKUPはどの方向でも取得できます。

Before(VLOOKUPの場合):
左側の列を取得するには列を並べ替えるか、INDEX/MATCH関数を組み合わせる必要があり、式が複雑になりがちです。

=INDEX(A:A, MATCH(E1, B:B, 0))

After(XLOOKUPの場合):
検索範囲と結果の範囲を自由に指定できるので、シンプルに書けます。

たとえば「商品名(B列)」で検索して「商品コード(A列)」を返す場合:

=XLOOKUP(E1, B:B, A:A)

ちょっとむずかしく見えますが、やっていることはシンプルです。「B列で探して、A列の値を返す」というだけです。

04 result xlookup reverse

複数列をまとめて返す

XLOOKUPは第3引数の結果の範囲に複数列を指定すると、まとめて返してくれます。

商品コードで検索して「商品名」と「単価」を同時に取得する例:

=XLOOKUP(E1, A:A, B:C)

これを入力すると、F1セルに商品名、G1セルに単価が自動で展開されます(スピル機能)。VLOOKUPでは列ごとに数式を書く必要があったので、大幅に手間が減ります。

05 result xlookup multi column

見つからない場合にデフォルト値を返す

VLOOKUPでは一致しないと #N/A エラーが出るため、別途 IFERROR でエラー処理する必要がありました。

Before(VLOOKUPの場合):

=IFERROR(VLOOKUP(E1, A:C, 2, FALSE), "該当なし")

After(XLOOKUPの場合):
第4引数に表示したい文字を指定するだけです。

=XLOOKUP(E1, A:A, B:B, "該当なし")

IFERRORを外付けしなくてよいので、式がスッキリします。空白にしたい場合は "" を指定してください。

06 result xlookup not found
=XLOOKUP(E1, A:A, B:B, "")

よくあるエラーと対処法

#N/Aエラーの原因と解決策

(P)結論: #N/A エラーが出る主な原因は「検索キーが検索範囲に存在しない」か「データの型が違う」ことです。

(R)理由: XLOOKUPはデフォルトで完全一致(一致モード=0)を使うため、値が完全に一致しないと見つからないと判断します。

(E)よくあるミス:

  • 検索キーが数値なのに検索範囲のデータが文字列になっている(または逆)
  • セルに余分なスペースが入っている
  • 日付の表示形式がシリアル値のまま

(P)解決策:
型の不一致が疑われる場合は、TEXT 関数や VALUE 関数で型を揃えましょう。また、第4引数に "該当なし""" を設定しておくと、エラーの代わりにわかりやすい表示に変えられます。

=XLOOKUP(E1, A:A, B:B, "データなし")

補足

一致モードを 2(ワイルドカード)にすると、部分一致検索ができます。たとえば "りんご" で「りんご」を含む行を検索できます。


VLOOKUPとの違い・使い分け

比較項目VLOOKUPXLOOKUP
検索方向左端列のみ任意の列・行
横方向の検索不可(HLOOKUPが必要)
エラー処理IFERRORが別途必要第4引数で内蔵
列番号の指定必要(何列目か数える)不要(範囲で指定)
複数列の同時取得不可可(スピル)
対応バージョンすべてのバージョン2022年9月以降のスプレッドシート

どちらを使うべきか?

Googleスプレッドシートを普段使いしているなら、今後は迷わずXLOOKUPを選びましょう。VLOOKUPで書けることはすべてXLOOKUPで書けますし、できないことも多く解消されます。

ただし、シートを他のメンバーと共有していて「古いスプレッドシートや古いExcelで開く可能性がある」場合は、互換性の観点からVLOOKUPのままにしておく判断もありです。


まとめ

XLOOKUP関数のポイントをまとめます。

  • 基本は3引数: =XLOOKUP(検索キー, 検索範囲, 結果の範囲) で動く
  • 左方向にも検索できる: VLOOKUPの列制限がなく、検索範囲と結果の範囲を自由に設定できる
  • エラー処理が内蔵: 第4引数で "該当なし" などを指定すれば #N/A をそのまま置き換えられる
  • 縦横両対応: VLOOKUPとHLOOKUPを1つの関数に統合したイメージ
  • 複数列まとめ取得: 結果の範囲に複数列を指定してスピルで展開できる

VLOOKUPに慣れている方も、基本の3引数から使い始めれば違和感なく移行できます。まず手元の作業で1回使ってみてください。慣れてしまえば「もうVLOOKUPには戻れない」と感じるはずです。

スプレッドシートで他にも便利な検索系の関数を知りたい方は、MATCH関数やINDEX関数の解説もあわせてどうぞ。

タイトルとURLをコピーしました