Hの実践的な例を通じてExcel VLOOKUP関数を完全にマスターしましょう。基本的な完全一致検索から、近似一致検索、IFERROR関数によるエラー処理、複数シートにまたがる高度な検索テクニックまでを詳細に解説します。あらゆるレベルのユーザーに役立つ関数活用の完全ガイドです。"> VLOOKUP 関数完全マスターガイド — AIExcelTools Hの実践例でExcel VLOOKUPをマスター。基本的な完全一致検索から、近似一致、IFERRORによるエラー処理、複数シートの検索までの高度なテクニックを詳しく解説。業務効率を劇的に向上させる関数活用術。">

VLOOKUP 完全ガイド

VLOOKUPとは何か、なぜ重要なのか

VLOOKUP(Vertical Lookup)は、テーブルの最初の列で値を検索し、別の列から対応する値を返します。Excel組み込みの検索エンジンと考えてください。製品IDを入力すれば、瞬時に価格、カテゴリ、在庫レベルを取得できます。レポート作成、照合作業、データ統合を行う場合、VLOOKUPは毎週何時間もの時間を節約します。

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

VLOOKUP構文図:各引数をサンプルスプレッドシートに対応付け — lookup_valueは'SKU-301'を含むセルA2を指し、table_arrayは範囲B2:D100を強調、col_index_numは3で丸囲みされPrice列を指し、range_lookupは完全一致のFALSEを示しています
図1 — 4つのVLOOKUP引数を視覚的に解説。列番号は選択範囲の左端から数え、ワークシートの列Aからではないことに注意してください。

ステップバイステップ:初めてのVLOOKUP

実際のシナリオを見ていきます。列B〜Eに製品カタログがあり、列Aに検索する製品IDリストがあります。カタログから価格を列Fに抽出します。

ステップ1 — データを準備する

ワークブックを開き、データレイアウトを確認します:

  1. 製品カタログシートに移動します。列Bに製品ID、列Dに価格があることを確認します。
  2. カタログ範囲内に完全に空の行が存在しないことを確認します。Excelは空行をデータの終わりとみなすため、VLOOKUPがそれ以降の行を見落とす原因になります。
  3. カタログ範囲(B2:E500)を選択し、Ctrl+Tを押してExcelテーブルに変換します。テーブルデザインタブから Catalog と名前を付けます。テーブルは自動拡張され、構造化参照が使えます。
Excel spreadsheet showing a product catalog in columns B-E: Column B 'Product ID' (B2:B12), Column C 'Product Name', Column D 'Price', Column E 'Category'. Column A shows a smaller lookup list of 5 product IDs (A2:A6). Column F is empty with header 'Lookup Result'. The catalog range B2:E12 is formatted as an Excel Table with blue banded rows.
図2 — VLOOKUPを書く前のサンプルデータレイアウト。カタログは右側(列B〜E)、検索リストは列A、列Fに結果が入ります。

ステップ2 — 最初の結果セルに数式を書く

  1. セルF2(検索結果の最初の行)をクリックします。
  2. =VLOOKUP( と入力します — Excelが4つの引数のヒントを表示します。入力中に参照として使用してください。
  3. 検索値としてセルA2をクリックします。Excelが A2 を数式に挿入します。
  4. カンマを入力し、カタログ範囲全体 B2:E500をマウスで選択します。すぐにF4を押して参照をロックします — $B$2:$E$500 と表示されるはずです。この絶対参照により、数式を下にコピーしても範囲がずれません。
  5. カンマを入力し、列番号として 3 を入力します。なぜ3か? 価格はB2:E500の左端から数えて3列目だからです:B=1, C=2, D=3。
  6. カンマを入力し、完全一致として FALSE を入力します。
  7. 括弧を閉じてEnterを押します。

完成した数式は次のようになります: =VLOOKUP(A2, $B$2:$E$500, 3, FALSE)

Excel formula bar showing =VLOOKUP(A2, $B$2:$E$500, 3, FALSE) with each argument color-highlighted. Cell F2 displays the returned price value. A tooltip near the formula bar shows the four-argument hint. The cursor is positioned in cell F2.
図3 — F2の完成した数式。範囲の$記号に注目してください — これらは数式を後続行にコピーする際に不可欠です。

ステップ3 — 数式を下方向にコピーする

  1. セルF2をクリックして選択します。選択範囲の右下隅に小さな緑の四角(フィルハンドル)が表示されます。
  2. フィルハンドルをダブルクリックします。Excelが列Aのデータに合わせて自動的に数式を下方向にコピーします。
  3. または、F2を選択し、Ctrl+Shift+下矢印で最終行まで選択を拡張し、Ctrl+D(下方向にコピー)を押します。
  4. いくつかの行を確認します:F5をクリックして数式バーを見ます。=VLOOKUP(A5, $B$2:$E$500, 3, FALSE) と表示されるはずです — A5が変わり(相対参照)、$B$2:$E$500が変わらない(絶対参照)ことに注意してください。
Excel sheet showing column F filled with VLOOKUP results. Cell F2 shows $49.99, F3 shows $12.50, F4 shows #N/A (for a product ID not found in the catalog), F5 shows $299.00. The fill handle is highlighted on F2, and an arrow indicates the formula was copied down.
図4 — 数式を下方向にコピーした後。F4の#N/Aは、その製品IDがカタログに存在しないことを意味します — 次のステップで修正します。

ステップ4 — IFERRORで欠損値を処理する

#N/Aエラーはレポートを壊れたように見せます。代わりにわかりやすいメッセージを表示するよう数式をラップしましょう:

  1. セルF2をダブルクリックして数式を編集します。
  2. =VLOOKUP の直前に =IFERROR( と入力します。
  3. 数式の末尾(VLOOKUPの閉じ括弧の後)に移動し、カンマを入力してから "カタログにありません") と入力します。
  4. Enterを押します。数式は次のようになります: =IFERROR(VLOOKUP(A2, $B$2:$E$500, 3, FALSE), "カタログにありません")
  5. F2のフィルハンドルを再度ダブルクリックして、改善された数式を下にコピーします。
  6. 行4には、醜い#N/Aの代わりに「カタログにありません」と表示されます。

主要テクニックとベストプラクティス

テクニック1 — 名前付き範囲で自己文書化された数式を作る

$B$2:$E$500 のような不可解なセル参照を含む数式は、後から理解するのが困難です。名前付き範囲でこれを解決します:

  1. 範囲B2:E500を選択します。名前ボックス(通常セルアドレスが表示される数式バーの左側のフィールド)をクリックします。
  2. CatalogTable と入力してEnterを押します。範囲に名前が付きました。
  3. VLOOKUPを次のように書き直します: =IFERROR(VLOOKUP(A2, CatalogTable, 3, FALSE), "見つかりません")
  4. この数式を読む人は誰でも、CatalogTableが検索元だとすぐにわかります — セル参照を追跡する必要はありません。

テクニック2 — MATCHによる動的な列番号

列番号として 3 をハードコードすると、列を挿入・削除したときに壊れます。代わりにMATCHに正しい列番号を自動検出させましょう:

  1. 行1(B1:E1)にヘッダーがあると仮定します:「製品ID」「製品名」「価格」「カテゴリ」。
  2. ハードコードされた 3 を次のように置き換えます: MATCH("価格", $B$1:$E$1, 0)
  3. 完全な数式: =IFERROR(VLOOKUP(A2, CatalogTable, MATCH("価格", $B$1:$E$1, 0), FALSE), "見つかりません")
  4. これで、誰かがCとDの間に「サプライヤー」列を挿入しても、価格は列3から列4に移動しますが — MATCHが自動的に見つけるため、数式は引き続き機能します。

テクニック3 — VLOOKUP + COLUMN トリックで複数列を返す

各検索IDに対して製品名、価格、カテゴリのすべてを抽出する必要がある場合:

  1. F2(名前): =IFERROR(VLOOKUP($A2, CatalogTable, 2, FALSE), "")
  2. G2(価格): =IFERROR(VLOOKUP($A2, CatalogTable, 3, FALSE), "")
  3. H2(カテゴリ): =IFERROR(VLOOKUP($A2, CatalogTable, 4, FALSE), "")
  4. $A2 に注目 — ドル記号は列参照をAに固定しますが、行(2)は下方向コピー時に調整されます。これで3つの数式すべてを一気に右と下にコピーできます。

よくある間違い(と即座に修正する方法)

  1. 間違い: データが明らかに存在するのにVLOOKUPが#N/Aを返す。
    修正: 検索値とテーブルの最初の列のデータ型が異なります。"00123"(文字列)≠ 123(数値)。検索列を選択し、データ > 区切り位置 > 完了で文字列数値を実際の数値に変換します。または、検索値を TEXT(A2, "00000") でラップします。
  2. 間違い: 行2では動作するが、行3にコピーすると壊れる。
    修正: 範囲を$記号でロックし忘れています。F2を編集し、数式内の B2:E500 を選択してF4を押します。$B$2:$E$500 になるはずです。
  3. 間違い: VLOOKUPが誤った値を返す — ほぼ正しいが微妙にずれている。
    修正: 第4引数を省略しています。FALSEがないと、VLOOKUPはデフォルトで近似一致を使用します。ソート済みリスト内で最も近い値を探すため、求める完全一致ではない可能性があります。常に明示的にFALSEを入力してください。
  4. 間違い: カタログに列を挿入したら、すべてのVLOOKUPが壊れた。
    修正: 上記のMATCHテクニックを使用して列番号を動的にします。すでに壊れてしまった場合は、検索と置換(Ctrl+H)で列番号を一括更新します。
  5. 間違い: 重複がある場合、VLOOKUPは最初の一致のみを返す。
    修正: VLOOKUPは常に検索列の最初の一致を返します。すべての一致が必要な場合は、SMALL/IFの配列数式を使ったINDEX-MATCHに切り替えるか、最後の一致を返せるXLOOKUPにアップグレードします。

パワーユーザー向け高度なヒント

Download Practice Template
この記事について質問や誤りを見つけましたか?