VLOOKUPとXLOOKUPを完全マスター
VLOOKUPの構文・よくあるエラーからXLOOKUPの優位性まで、実務で使える検索関数を具体例とともに完全解説します。
このレッスンで学ぶこと
- VLOOKUPの構文と引数の意味
- よくあるエラーの原因と対処法
- XLOOKUPの優位性と使い分け
- 実務で使える検索パターン3選
VLOOKUPとは?
VLOOKUPは「Vertical Lookup(垂直検索)」の略で、表の左端列をキーにして、右側の列から値を取り出す関数です。
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
| 引数 | 説明 | 例 |
|---|---|---|
| 検索値 | 探したい値 | A2(商品コード) |
| 範囲 | 検索対象の表 | 商品マスタ!A:D |
| 列番号 | 取り出したい列の番号 | 2(2列目=商品名) |
| 検索方法 | 完全一致か近似一致か | FALSE(完全一致) |
実務例:商品コードから商品名を引く
注文データのA列に商品コードがあり、商品マスタから商品名を取得したい場合:
=VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE)
重要: 第4引数は必ず
FALSE(完全一致)を指定しましょう。省略するとTRUE(近似一致)になり、意図しない値が返ることがあります。
FALSEとTRUEの違い
| 検索方法 | 動作 | 使う場面 |
|---|---|---|
FALSE(完全一致) | 検索値と完全に一致する行を探す | コード検索、マスタ参照(99%はこちら) |
TRUE(近似一致) | 検索値以下で最も近い値を探す | 税率表、成績ランク表など |
TRUE(近似一致)の使いどころ
成績ランク表:
| 点数 | ランク |
|------|--------|
| 0 | D |
| 60 | C |
| 70 | B |
| 80 | A |
| 90 | S |
=VLOOKUP(75, ランク表, 2, TRUE) → 結果: "B"
75点は70以上80未満なので「B」が返ります。TRUEを使う場合、検索列は昇順にソートされている必要があります。
VLOOKUPでよくあるエラー
#N/A エラー
原因1: 検索値がマスタに存在しない
対策:IFERRORで囲む
=IFERROR(VLOOKUP(A2, マスタ!A:C, 2, FALSE), "該当なし")
原因2: 余分なスペースが混入している
対策:TRIMで前後の空白を除去
=VLOOKUP(TRIM(A2), マスタ!A:C, 2, FALSE)
#REF! エラー
原因: 列番号が範囲の列数を超えている
=VLOOKUP(A2, A:C, 5, FALSE) ← 3列しかないのに5列目を指定
列の挿入で壊れる問題
VLOOKUPの列番号は数字で指定するため、マスタに列を挿入するとズレます。
列挿入前: =VLOOKUP(A2, マスタ!A:D, 3, FALSE) → 「単価」列を参照
列挿入後: 同じ数式なのに「カテゴリ」列を参照してしまう!
この問題を根本的に解決するのが、次に紹介するXLOOKUPです。
XLOOKUPとは?
XLOOKUPはExcel 2021 / Microsoft 365で使えるVLOOKUPの上位互換関数です。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
VLOOKUPとの比較
| 特徴 | VLOOKUP | XLOOKUP |
|---|---|---|
| 検索方向 | 左→右のみ | 左右どちらも可 |
| 列番号の指定 | 数字(ズレるリスク) | 戻り範囲を直接指定 |
| 見つからない場合 | IFERRORが必要 | 第4引数で指定可 |
| 複数列の返却 | 不可 | 戻り範囲を広げるだけ |
| デフォルト一致モード | 近似一致(TRUE) | 完全一致 |
実務例:顧客マスタから情報を引く
=XLOOKUP(A2, 顧客マスタ!B:B, 顧客マスタ!D:D, "未登録")
- 第1引数:検索する顧客コード
- 第2引数:顧客マスタの検索列
- 第3引数:取り出したい列(会社名など)
- 第4引数:見つからなければ「未登録」と表示
XLOOKUPの強み:左方向の検索
VLOOKUPでは検索キーが表の左端にないと使えませんでした。XLOOKUPにはこの制約がありません。
| 商品名 | カテゴリ | 商品コード |
|----------|---------|-----------|
| ノートPC | 電子機器 | P-001 |
| マウス | 周辺機器 | P-002 |
商品名から商品コードを引く(右→左の検索):
=XLOOKUP("ノートPC", A:A, C:C) → "P-001"
VLOOKUPではINDEX+MATCHの組み合わせが必要でしたが、XLOOKUPなら1つの関数で完結します。
どちらを使うべき?
判断フローチャート:
1. Excel 2021 / Microsoft 365 を使っている?
→ はい → XLOOKUPを使う
→ いいえ → VLOOKUPを使う
2. 他の人とファイルを共有する?
→ 相手がXLOOKUP非対応の可能性あり → VLOOKUPを使う
→ 全員365環境 → XLOOKUPを使う
実務のヒント: 社内でExcelのバージョンが混在している場合は、VLOOKUPを基本とし、自分だけが使うファイルではXLOOKUPを使うのが安全です。
ハンズオン演習
以下の2つのシートを作成して練習してください。
シート1:注文データ
| 注文番号 | 商品コード | 数量 |
|---------|-----------|------|
| 001 | A-101 | 3 |
| 002 | B-205 | 1 |
| 003 | A-101 | 5 |
| 004 | C-310 | 2 |
| 005 | Z-999 | 1 |
シート2:商品マスタ
| 商品コード | 商品名 | 単価 |
|-----------|-------------|--------|
| A-101 | ノートPC | 89000 |
| B-205 | ワイヤレスマウス | 3500 |
| C-310 | USBハブ | 2800 |
| D-415 | モニター | 45000 |
演習1: VLOOKUPで注文データに商品名を追加してください。
演習2: VLOOKUPで単価を取得し、数量 × 単価 で金額を計算してください。
演習3: Z-999はマスタに存在しません。IFERRORで「該当なし」と表示してください。
演習4:(365ユーザー向け)XLOOKUPで同じ処理を書き直し、VLOOKUPとの違いを実感してください。
まとめ
- VLOOKUP は表の左端列をキーに右方向へ検索する関数。第4引数は必ず
FALSEを指定 - よくあるエラーは
#N/A(値が見つからない)と列番号のズレ - XLOOKUP はVLOOKUPの上位互換。左右検索・エラー処理内蔵・列番号不要
- ファイル共有相手のExcelバージョンに応じて使い分ける
次のレッスンでは、関数では大変な大量データの集計を一瞬でこなす「ピボットテーブル」を学びます。