比較的新しい検索関数であるXLOOKUP関数について、使い方と内部のしくみを解説します。草野球の成績管理表で、選手マスタから背番号を参照する場面を例に、初心者向けに丁寧に説明します。
XLOOKUP関数とは
検索値をもとに、指定した範囲の中から対応する値を探して返す関数です。VLOOKUPの新しいバージョンにあたる関数で、「検索する範囲」と「返す範囲」を別々に指定できるのが最大の特徴です。
基本の書式はこうです。
=XLOOKUP(検索値, 検索範囲, 返す範囲)
VLOOKUPが「範囲・列番号」という指定方法だったのに対し、XLOOKUPは「検索する列」と「返したい列」をそのまま範囲として指定します。
成績管理表での実例:選手マスタ参照をシンプルな式に置き換える
大阪グーニーズの管理表には「選手マスタ」というシートがあり、選手名・背番号・守備位置をまとめて管理しているとします。A列に選手名、B列に背番号、C列に守備位置が入っている想定です。
| 選手名 | 背番号 | 守備位置 |
|---|---|---|
| SUZUKI | 7 | 中堅手 |
| NAKATA | 3 | 一塁手 |
| YAMAMOTO | 5 | 左翼手 |
| … | … | … |
「個人成績」シートのA2セルに選手名が入っているとき、対応する背番号をB2セルに表示したい場合、式はこうなります。
=XLOOKUP(A2, 選手マスタ!A:A, 選手マスタ!B:B)
「A2の選手名を、選手マスタのA列から探し、見つかった行のB列の値を返す」という指定がそのまま式になっています。列番号を数える必要がない分、VLOOKUPより直感的に読める式になります。
個人成績シートの背番号欄(例:B2セル)をクリックして選択します。
検索値には、選手名が入っているセル(A2)をクリックして指定します。
2つ目の引数に「選手マスタ!A:A」(選手名の列)、3つ目の引数に「選手マスタ!B:B」(背番号の列)を指定します。
式を確定すると、選手名に対応する背番号がすぐに表示されます。
しくみを理解する:XLOOKUPは何をしているのか
VLOOKUPは「検索範囲の左端列を探し、そこから右方向に指定した列数だけずらした値を返す」という仕組みでした。そのため、返したい値が検索する列より左側にある場合は使えず、前回(INDEX+MATCH)のように2つの関数を組み合わせて回避する必要がありました。
- 検索範囲と返す範囲を別々に指定できるため、返したい列が検索列の左右どちらにあっても関係なく使える
- 既定の一致方法が「完全一致」になっている(VLOOKUPは既定が近似一致で、第4引数にFALSEを指定し忘れると事故が起きやすかった)
- 見つからない場合に返す代替値を、第4引数にそのまま指定できる仕組みがある
よくあるミス
「選手マスタ!A2:A50」と「選手マスタ!B2:B100」のように、2つの範囲の高さ(行数)が一致していないとエラーになります。範囲はA:A、B:Bのように列全体で指定するか、開始・終了行をきちんと揃えるようにしましょう。
XLOOKUPは比較的新しい関数のため、更新が反映されていない古いスプレッドシートのコピー元や、対応していないバージョンのExcelでは使えない場合があります。共有ファイルを他の人が編集する予定がある場合は、事前に対応状況を確認しておくと安心です。
- XLOOKUPは「検索値をもとに、指定範囲から対応する値を返す」関数
- 検索範囲と返す範囲を別々に指定できるため、VLOOKUPの「左端列限定」という制約がない
- 既定が完全一致で、見つからない場合の代替値も第4引数で直接指定できるため、安全に書きやすい
次回予告
次回のテーマは「検索関数のエラー対策まとめ」です。VLOOKUPやXLOOKUPなどの検索関数で#N/Aエラーが出る典型パターンと、IFERROR・IFNAとの組み合わせ方を解説していきます。
▶︎ 次回:検索関数のエラー対策まとめ


コメント