VLOOKUPが動かないときの原因と解決策!Googleスプレッドシートでのトラブルを解消する方法を実例付きで徹底解説

はじめに

Googleスプレッドシートでデータ検索や参照を行う際に非常に便利なVLOOKUP関数ですが、時には予期しないエラーや間違った結果が表示されることもあります。VLOOKUP関数がうまく動作しないときは、その原因がデータの形式や構造、関数の指定方法にあることが多いです。

この記事では、VLOOKUP関数が動作しない主な原因とその解決策を実例付きで紹介します。問題が発生したときに簡単に対処できるように、具体的なデータセットも使って解説しています。


目次

1. データ型の不一致

問題の原因

検索値のデータ型(文字列または数値)が、検索範囲のデータ型と一致していない場合、VLOOKUP関数はデータを正しく認識できません。たとえば、検索値が「1000」という数値で、検索対象が文字列の「1000」として保存されている場合、エラーが発生することがあります。

実例と解決策

データ例

ID名前売上
001田中50,000
002鈴木30,000
003山田20,000
“003”加藤15,000

このデータの中で、「ID」に文字列として入力されたもの(例:”003″)があります。以下のようにVLOOKUPを設定すると、エラーが発生します。

=VLOOKUP(3, A2:C5, 2, FALSE)

解決方法

データ型が一致していない場合、VALUE関数を使って数値に変換します。

=VLOOKUP(VALUE(A2), A2:C5, 2, FALSE)

これにより、数値と文字列の「003」を区別せず、正しく検索できます。


2. 一致オプションの指定ミス(TRUE/FALSE)

問題の原因

VLOOKUPの第4引数で指定する一致オプションには「TRUE」または「FALSE」がありますが、デフォルトがTRUE(近似一致)であるため、適切に指定しないと誤った結果が返されることがあります。

実例と解決策

データ例

商品ID商品名在庫数
001ノートPC5
002タブレット3
003スマートフォン8
004カメラ2

例えば、商品IDが「002」の商品を検索する場合、完全一致(FALSE)を指定せずにVLOOKUPを使用すると、正確な結果が出ないことがあります。

=VLOOKUP("002", A2:C5, 2)

解決方法

第4引数にFALSEを設定して完全一致で検索するように指定します。

=VLOOKUP("002", A2:C5, 2, FALSE)

3. 検索値が範囲の左端にない

問題の原因

VLOOKUPは範囲の左端列を基準に検索するため、検索値が左端以外の列にあると正常に機能しません。

実例と解決策

データ例

名前ID部署
佐藤001営業
鈴木002開発
田中003サポート

「ID」を使って「名前」を検索したい場合、通常のVLOOKUPでは範囲の左端に「ID」がないため、正しい結果を返しません。

解決方法

この場合、INDEXMATCHを使って解決します。

=INDEX(A2:A4, MATCH("002", B2:B4, 0))

4. データの重複

問題の原因

VLOOKUPは最初に一致したデータのみを返すため、重複データがあると想定外の結果が表示されることがあります。

実例と解決策

データ例

名前部署
田中営業
佐藤営業
鈴木開発
田中サポート

名前「田中」に対応する部署を検索すると、最初の一致である「営業」が返されますが、他の「田中」の部署(サポート)は返されません。

解決方法

重複が発生しないようデータ整理するか、FILTER関数を使って条件に合致する全データを取得します。

=FILTER(B2:B5, A2:A5 = "田中")

5. 範囲外の列番号

問題の原因

VLOOKUPの列番号が指定範囲の列数を超えていると、エラー(#REF!)が表示されます。

実例と解決策

データ例

ID名前
001田中
002鈴木

範囲A2で「ID」に基づき「名前」を検索する場合、列番号に「3」を指定するとエラーになります。

=VLOOKUP("001", A2:B3, 3, FALSE)

解決方法

範囲内の列数を確認し、正しい列番号(ここでは「2」)を指定します。

=VLOOKUP("001", A2:B3, 2, FALSE)

6. 空白やスペースの混在

問題の原因

セル内に余分な空白やスペースが含まれていると、VLOOKUPは一致しないと判定することがあります。

実例と解決策

データ例

ID名前
001田中
002鈴木

検索値「田中」がセルに余分なスペースを含む場合、通常のVLOOKUPでは一致しません。

解決方法

TRIM関数を使用して余分なスペースを削除します。

=VLOOKUP(TRIM(" 田中 "), A2:B3, 2, FALSE)

7. データが並べ替えられていない

問題の原因

近似一致(TRUE)を指定している場合、検索範囲が昇順に並んでいないと、正確な結果が得られないことがあります。

実例と解決策

データ例

ID名前
003佐藤
002鈴木
001田中

昇順に並べていない範囲でTRUE(近似一致)を使うと、予期しない結果が返ることがあります。

解決方法

TRUEを使用する場合は、検索範囲を昇順に並べ替えるようにします。また、完全一致の「FALSE」を使うとより確実です。

=VLOOKUP("002", A2:B3, 2, FALSE)

8. 複数の条件で検索を行いたい場合

問題の原因

VLOOKUPは1つの検索値にしか対応しないため、複数の条件で検索する場合、正しい結果が得られません。

実例と解決策

データ例

名前部署売上
田中営業50000
田中開発30000

名前と部署の両方を条件にして「田中・開発」の売上を検索するには、通常のVLOOKUPでは対応できません。

解決方法

INDEXMATCHを組み合わせることで解決します。

=INDEX(C2:C3, MATCH(1, (A2:A3="田中")*(B2:B3="開発"), 0))

まとめ

VLOOKUP関数がうまく動かない原因には、データ型の不一致、余分なスペース、範囲の設定ミスなど様々な要因があります。今回紹介した実例と対処方法を活用することで、VLOOKUPのエラーを効率よく解決し、よりスムーズにスプレッドシートの活用ができるようになるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ドローン撮影、動画編集、サイト運営、パソコンスキルを説明紹介

コメント

コメントする

目次