レッスン 4 15分

検索関数:VLOOKUP・INDEX-MATCH・XLOOKUP

3つの必須検索関数でテーブル間のデータを自在に連携させる。それぞれの使い分けとAIでの生成法を学ぶ。

会話できない2つのスプレッドシート

営業チームは「顧客注文」と「商品価格表」を別々のスプレッドシートで管理していた。毎月、インターンが1つずつ商品を手引きし、価格を注文シートに手入力していた。300商品、1,000件の注文。40時間のエラーだらけの手作業。

VLOOKUPの数式1つで、40時間が4秒になった。

🔄 前のレッスンでデータをフラットテーブルに整理した。クリーンで一貫性のあるデータが重要な理由を覚えているだろうか?検索関数はクリーンなデータに依存する。「ウィジェット」と「ウィジェット 」(末尾にスペース)はマッチしない。レッスン3の整理がレッスン4を機能させる。

VLOOKUP:定番の検索関数

VLOOKUPは範囲の最左列で値を検索し、指定した列の値を返す。

構文: =VLOOKUP(検索値, 範囲, 列番号, [検索方法])

例: 商品IDから価格を取得: =VLOOKUP(A2, 商品表!A:C, 3, FALSE)

  • A2 —— 検索する値(商品ID)
  • 商品表!A:C —— 検索範囲(商品表シートのA〜C列)
  • 3 —— 3列目(価格)の値を返す
  • FALSE —— 完全一致(ほぼ常にFALSEを使う)

よくあるVLOOKUPミス:

ミス問題対処法
FALSEの付け忘れ近似値を返し、誤った結果になる完全一致にはFALSEを必ず指定
列番号の間違い別の列のデータが返る列数を慎重にカウント
検索列が最左列でない#N/Aエラーテーブル再構成かINDEX-MATCHを使用
データの余計なスペース「同じ値」なのに#N/A検索値とデータの両方にTRIMを適用

Quick Check: VLOOKUPが#N/Aを返すが、テーブルにその値は確かに存在する。最も可能性の高い3つの原因は?

INDEX-MATCH:柔軟な最強コンビ

2つの関数の組み合わせで動作する:

MATCH —— 範囲内で値の位置(行番号)を見つける INDEX —— 指定した位置の値を返す

構文: =INDEX(返す範囲, MATCH(検索値, 検索範囲, 0))

例: 先ほどのVLOOKUPと同じ処理: =INDEX(商品表!C:C, MATCH(A2, 商品表!A:A, 0))

  • 商品表!C:C —— 値を返す列(価格)
  • A2 —— 検索する値(商品ID)
  • 商品表!A:A —— 検索する列
  • 0 —— 完全一致

INDEX-MATCHが優れている理由

  1. どの方向にも検索可能。 VLOOKUPは右方向のみ。INDEX-MATCHは左にも右にも、完全に別のテーブルにも検索できる。
  2. 列の挿入で壊れない。 VLOOKUPの列番号は列を挿入するとずれる。INDEX-MATCHは列参照を使うためずれない。
  3. 大規模データで高速。 10万行以上のデータセットでINDEX-MATCHの方がパフォーマンスが良い。
2つのテーブル間でデータを検索したい:

テーブル1(注文表):注文ID、商品ID、数量、顧客名
テーブル2(商品表):商品ID、商品名、単価、カテゴリ

注文表に商品名と単価を引っ張りたい。
VLOOKUPとINDEX-MATCHの両方の数式を書いて、
この場面でどちらが適しているか理由とともに説明してください。

XLOOKUP:モダンな解決策

Excel 365とGoogleスプレッドシートで使える。VLOOKUPとINDEX-MATCHの両方を置き換えるシンプルな構文。

構文: =XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからない場合])

例: =XLOOKUP(A2, 商品表!A:A, 商品表!C:C, "該当なし")

  • A2 —— 検索値
  • 商品表!A:A —— 検索する場所
  • 商品表!C:C —— 返す値
  • "該当なし" —— マッチしない場合の表示(エラー処理内蔵)

Quick Check: 古いバージョンのExcelを使う人にもシートを共有する場合、XLOOKUPを使うべきか?安全な代替策は?

使い分けガイド

場面推奨関数理由
手早い一回限りの検索VLOOKUP書くのが最速
本番の共有スプレッドシートINDEX-MATCH最も互換性が高く堅牢
Excel 365 / Googleスプレッドシート限定XLOOKUP最もシンプル、エラー処理内蔵
検索列が最左列でないINDEX-MATCH / XLOOKUPVLOOKUPは左方向に検索できない
大規模データ(10万行超)INDEX-MATCH最高のパフォーマンス

複数条件の検索

商品「ウィジェット」かつ地域「北海道」の価格を検索したいとき。

方法1:ヘルパー列で結合 ヘルパー列を追加:=A2&B2 で「ウィジェット北海道」を作り、VLOOKUPで検索。

方法2:INDEX-MATCHの配列数式 =INDEX(C:C, MATCH(1, (A:A="ウィジェット")*(B:B="北海道"), 0))

※配列数式:ExcelではCtrl+Shift+Enter。Googleスプレッドシートではそのまま動作。

Key Takeaways

  • VLOOKUPは最もシンプルだが、右方向のみ検索でき、列挿入で壊れやすい
  • INDEX-MATCHはより柔軟で堅牢。本番スプレッドシートにはこちらが安全
  • XLOOKUPは両方の長所を兼ね備えるが、Excel 365 / Googleスプレッドシートが必要
  • VLOOKUPではほぼ常にFALSE(完全一致)を指定すること
  • IFERRORでラップして、検索値が見つからない場合のエラーをハンドルする
  • AIにデータ構造を日本語で説明すれば、最適な検索数式を生成できる

Up Next

レッスン5:ピボットテーブルでは、スプレッドシート最強の機能を学ぶ。数千行のデータを数クリックで集計・比較・分析——数式を書かずに。

理解度チェック

1. INDEX-MATCHがVLOOKUPより一般的に優れている理由は?

2. XLOOKUPの特徴として正しいのは?

すべての問題に答えてから確認できます

まず上のクイズを完了してください

関連スキル