【徹底解説】
ExcelでVLOOKUP関数が正しく動作しない理由とその対策

INDEX/MATCHを使ったスマートな検索方法も解説

ExcelのVLOOKUP関数は、便利で多くのユーザーに使われていますが、「うまく動かない」「エラーが出る」などのトラブルが頻繁に発生します。この記事では、よくある問題点とその解決方法を初心者にも分かりやすく解説します。さらに、代替案としてINDEX/MATCH関数の活用法も紹介します。

1.VLOOKUP関数とは?

VLOOKUP関数は、指定した範囲内で値を検索し、対応する列の値を返す関数です。

=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
例:顧客情報の取得

以下の表で、顧客IDに基づいて顧客名を取得します。

=VLOOKUP(102, A1:B4, 2, FALSE)

結果: 「鈴木」

2.VLOOKUP関数でよくあるエラーの原因

(1) #N/Aエラーが出る
  原因: 検索値が範囲内に見つからない。
  例 : 検索値が数字の「102」なのに、範囲内の値が文字列の「102」
     として扱われている場合。

(2) 不正確な結果が返る
  原因: 第4引数(検索方法)がTRUEまたは省略されていると、
      範囲が昇順でない場合に誤った値を返す。

(3) 参照範囲が間違っている
  原因: 範囲指定のミスや、範囲の変更後に修正されていない場合。

(4) 列番号が不正
  原因: 指定した列番号が範囲外になっている。

(5) 絶対参照が設定されていない
  原因: 範囲が固定されていないため、数式コピー時に範囲がずれる。

※IFERROR関数での回避方法はこちら

3.エラーを解消する方法

(1) データ型を確認する
  方法: 検索値と範囲内の値のデータ型(数字、文字列)が一致
      しているか確認する。
  解決例: データを統一するために以下の関数を使用。
      文字列に変換: =TEXT(A1, "0")
      数字に変換: =VALUE(A1)

(2) 第4引数をFALSEに設定
  理由: 完全一致を指定することで不正確な結果を防ぐ。

(3) 範囲指定を見直す
  方法: 必要なデータを正確に含む範囲を設定する。

(4) 絶対参照を使う
  方法: 範囲を固定するために、範囲指定部分を絶対参照
     (例:$A$1:$B$4)にする。

4.INDEX/MATCHでの代替アプローチ

VLOOKUPの制約を回避するために、INDEX関数とMATCH関数を組み合わせた方法がおすすめです。

=INDEX(参照範囲, MATCH(検索値, 検索範囲, 0))

例:顧客情報の取得

同じデータを使用し、顧客名を取得します。

数式例:

=INDEX(B1:B4, MATCH(102, A1:A4, 0))

結果: 「鈴木」

メリット:
  1.列の順序に依存しない。
  2.左側の列を参照可能。

5.VLOOKUPとINDEX/MATCHの書き方違いまとめ

例題:商品情報を検索する

目的: 商品コード「P002」に対応する価格を取得。

1.VLOOKUPで解決

=VLOOKUP("P002", A1:C4, 3, FALSE)

結果: 25,000

2.INDEX/MATCHで解決

=INDEX(C1:C4, MATCH("P002", A1:A4, 0))

結果: 25,000

まとめ

VLOOKUP関数は便利ですが、よくあるエラーを理解し、適切に対処することでさらに使いやすくなります。また、INDEX/MATCH関数を活用することで、VLOOKUPの制約を克服できます。この記事で紹介した方法を参考に、エラーのないスムーズなExcel作業を実現してください。