VLOOKUP卒業宣言。XLOOKUPに移行する理由と使い方
Googleスプレッドシートを使っていると「VLOOKUPが使えれば十分」と思いがちですが、XLOOKUPはVLOOKUPの弱点をほぼ全て解決した上位互換です。移行コストはほぼゼロで、使い勝手が大きく変わります。
VLOOKUPの3つの弱点
- 検索列は必ず左端でないといけない — 右側の列を基準に検索できない
- 列番号の指定が脆い — 途中に列を挿入するとズレてエラーになる
- 見つからない場合の処理が面倒 — IFERRORを外側に書く必要がある
' VLOOKUPの典型的な書き方
=IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), "なし")
XLOOKUPの書き方
=XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからない場合], [一致モード])
同じことをXLOOKUPで書くとこうなります:
=XLOOKUP(A2, マスタ!A:A, マスタ!C:C, "なし")
すっきりしました。「見つからない場合」を第4引数に直接書けるので、IFERRORが不要です。
VLOOKUPではできない逆引き
XLOOKUPは検索列の位置制限がないため、右側の列を基準に左の列を返せます。
' 商品コード(D列)から商品名(A列)を返す
' ※VLOOKUPでは不可能な右→左の検索
=XLOOKUP(D2, マスタ!D:D, マスタ!A:A, "不明")
列追加に強い
VLOOKUPは「3列目を返す」という数値指定なので、途中に列を挿入するとズレます。XLOOKUPは「返す範囲をそのまま指定」するので、列構成が変わっても自動追従します。
' VLOOKUPは列番号3が固定 → 列挿入でズレる
=VLOOKUP(A2, マスタ!A:D, 3, FALSE)
' XLOOKUPは範囲指定 → 列挿入してもC列を追従
=XLOOKUP(A2, マスタ!A:A, マスタ!C:C, "なし")
複数列をまとめて返す
XLOOKUPは返す範囲を複数列にすると、一度に複数の値を取得できます。
' 商品名・単価・在庫数を一括取得
=XLOOKUP(A2, マスタ!A:A, マスタ!B:D, "なし")
これをB2セルに入力するだけで、B2・C2・D2に自動展開されます(スピル機能)。
XLOOKUPへの移行手順
- 既存のVLOOKUP式をXLOOKUPに書き換える(引数の対応表を参考に)
- IFERRORは削除して、第4引数に移す
- 列番号の数値指定を、実際の範囲指定に変更する
新規作成するシートはすべてXLOOKUPで書くことをおすすめします。一度慣れると、VLOOKUPには戻れなくなります。
次のステップ
関数の基本が固まったら、データ入力規則と条件付き書式でシートの品質を上げていきましょう。入力ミスを仕組みでゼロにできます。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。
