スプレッドシートのVLOOKUP関数の使い方|別シート参照・エラー対処まで解説

スポンサーリンク

「商品コードを入れたら商品名を自動で表示したい」。スプレッドシートを使っていると、こんな場面によく出会いますよね。

手作業で1つずつ探していたら時間がかかりますし、コピペミスも起きがちです。

そんなときに活躍するのがVLOOKUP関数です。検索値を指定するだけで、表から対応するデータを一発で取得できます。この記事では基本の書き方から別シート参照、エラー対処、XLOOKUPとの使い分けまで紹介します。

スプレッドシートのVLOOKUP関数とは?

VLOOKUP関数(読み方: ブイルックアップ関数)は、範囲の先頭列を縦方向に検索する関数です。一致した行から、指定した列の値を返してくれます。

名前はVertical(垂直)+ Lookup(検索)が由来です。「商品コードから商品名を引っ張る」「社員番号から部署名を取得する」。こうした「表引き」作業を数式1つで片付けてくれます。

ポイントは検索する列が範囲の先頭(左端)にあることです。左端以外の列で検索したい場合は、XLOOKUP関数を検討してください。

VLOOKUP関数にできることをまとめると、次のとおりです。

  • マスタ表から名前・価格・区分などを自動取得する
  • 別シートや別ファイルのデータを参照する
  • 近似一致で料金ランク・成績判定を行う
  • ワイルドカードで部分一致検索をする

NOTE

VLOOKUP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

VLOOKUP関数の書き方(構文と引数)

基本構文

VLOOKUP関数の構文はこちらです。

=VLOOKUP(検索キー, 範囲, 番号, [並べ替え済み])

引数は4つあります。最後の「並べ替え済み」だけ省略できます。

引数の説明

引数必須/省略可意味指定例
検索キー必須探したい値。セル参照が一般的A2
範囲必須検索対象の表。先頭列に検索キーを含むことB2:E100
番号必須範囲の左端から数えて何列目を返すか(1以上)3
並べ替え済み省略可FALSE = 完全一致 / TRUE = 近似一致FALSE

NOTE

Excelでは「検索値・列番号・検索の型」と呼びますが、スプレッドシートでは「検索キー・番号・並べ替え済み」です。動作は同じなので、Excel経験者はそのまま読み替えてください。

「並べ替え済み」(FALSE / TRUE)の使い分け

ここがVLOOKUPで一番つまずきやすい部分です。

FALSE(完全一致) は、検索キーとぴったり一致するデータだけを探します。実務の9割はこちらです。一致しなければ#N/Aエラーになります。

=VLOOKUP(A2, B2:D100, 2, FALSE)

TRUE(近似一致) は、検索キー以下の最大値を返します。料金表やランク判定に使います。ただし先頭列が昇順ソートされていることが前提です。

=VLOOKUP(A2, F2:G10, 2, TRUE)

NOTE

「並べ替え済み」を省略するとデフォルトはTRUEです。「なぜか変な値が返る」の原因は、たいていこの省略です。迷ったらFALSEを明示してください。

VLOOKUP関数の基本的な使い方

同じシート内でデータを検索する

商品コードから商品名を取得する例で見てみましょう。

A列〜C列に商品マスタがあるとします。A列が商品コード、B列が商品名、C列が価格です。

E2に入力したコードから商品名を取得するにはこう書きます。

=VLOOKUP(E2, A2:C100, 2, FALSE)

各引数の意味は次のとおりです。

  • E2: 検索キー(入力した商品コード)
  • A2:C100: 範囲(商品マスタ全体)
  • 2: 範囲の左から2列目(商品名)を返す
  • FALSE: 完全一致で検索

E2に「P-001」と入力すると、A列から「P-001」を探し、同じ行のB列の値を返します。

別シートのデータを参照する

実務では検索先が別シートにあることがほとんどです。シート名のあとに「!」をつけて範囲を指定します。

=VLOOKUP(A2, マスタ!A:D, 3, FALSE)

シート名に空白を含む場合はシングルクォーテーションで囲みます。

=VLOOKUP(A2, '商品 マスタ'!A:D, 3, FALSE)

NOTE

別シートの範囲をマウスで選択すると、シート名と「!」が自動で入力されます。手入力よりもミスが減るのでおすすめです。

範囲を固定するコツ(絶対参照)

VLOOKUPを下方向にコピーすると、範囲がズレることがあります。範囲は絶対参照で固定しましょう。

セル参照を選択した状態でF4キーを押すと「$」がつきます。

=VLOOKUP(A2, $B$2:$D$100, 2, FALSE)

検索キーのA2は相対参照のまま、範囲だけ固定するのが正解です。

なお、列全体を参照する書き方(A:Dなど)ならコピーしてもズレません。ただしデータ量が多いと処理が遅くなる場合があります。

VLOOKUP関数の実務活用パターン

IFERROR関数と組み合わせてエラーを防ぐ

VLOOKUPは検索キーが見つからないと#N/Aエラーを返します。資料として見栄えが悪いですし、後続の計算にも影響します。

IFERROR関数(エラー時に別の値を返す関数)で囲めば、エラーを防げます。

=IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), "該当なし")

実務では「該当なし」や空文字「””」を指定するケースが多いです。

近似一致(TRUE)で料金ランク判定する

売上金額からランクを判定する場面では、近似一致が便利です。

ランク表が次のようになっているとします。

下限金額ランク
0C
100000B
300000A
500000S

この表がF2:G5にあるとします。B2の金額に対してランクを返すにはこう書きます。

=VLOOKUP(B2, $F$2:$G$5, 2, TRUE)

B2が250,000なら「B」が返ります。250,000以下の最大値は100,000なので、その行のランクが返る仕組みです。

近似一致を使うときは下限金額を必ず昇順で並べてください。

ワイルドカードで部分一致検索する

「並べ替え済み」をFALSEにした状態でワイルドカードが使えます。

=VLOOKUP("*東京*", A2:C100, 2, FALSE)

「*」は任意の文字列にマッチします。「東京」を含む最初のデータを探したいときに使えます。

セル参照を使う場合は「&」で連結します。

=VLOOKUP("*"&E2&"*", A2:C100, 2, FALSE)

IMPORTRANGE関数と組み合わせて別ファイルを参照する

スプレッドシートならではの活用法です。IMPORTRANGE関数(別ファイルのデータを取得する関数)で取り込んだ範囲をVLOOKUPの検索対象にできます。

=VLOOKUP(A2, IMPORTRANGE("スプレッドシートURL", "マスタ!A:D"), 3, FALSE)

初回はアクセス許可の確認が表示されます。「アクセスを許可」を押せば、以降は自動的にデータを参照できます。

NOTE

IMPORTRANGEは共有ドライブの大規模マスタなどで重宝します。ただしファイルが重くなりやすいので、必要な列だけに絞ると安心です。

複数条件で検索する(補助列の活用)

VLOOKUPは検索キーを1つしか指定できません。「部署」と「役職」の2条件で検索したい場合は、補助列を作ります。

補助列に2つの値を「&」で連結した値を入れます。

=A2&"-"&B2

VLOOKUPの検索キーも同じ形式で連結します。

=VLOOKUP(E2&"-"&F2, 補助列を含む範囲, 列番号, FALSE)

補助列を使いたくない場合は、XLOOKUP関数やFILTER関数も検討してみてください。

よくあるエラーと対処法

#N/Aエラー

「検索キーが見つからない」という意味のエラーです。主な原因と対処法を表にまとめます。

原因確認ポイント対処法
値が存在しないマスタ側に該当データがあるかデータを追加するかIFERRORで対処
データ型の不一致数値と文字列が混在していないかVALUE関数で型を統一
余分なスペース見えない空白が入っていないかTRIM関数で除去
範囲がズレている絶対参照をつけ忘れていないかF4キーで$をつける

#REF!エラー

列番号が範囲の列数を超えているときに出ます。

たとえば範囲がA:Cの3列なのに、番号に4を指定した場合です。列を削除した直後にも起こりやすいので、範囲と番号の対応を確認してください。

間違った値が返る

エラーにはならないのに期待と違う値が返る。これが一番やっかいなケースです。

最も多い原因は「並べ替え済みを省略してTRUEになっている」パターンです。FALSEを明示すれば解決します。

もう1つは範囲の先頭列が検索対象と一致していないケースです。範囲の開始列を見直してみてください。

VLOOKUP関数と他の検索関数の使い分け

VLOOKUPは便利ですが、万能ではありません。場面に応じた関数選びのポイントを整理します。

VLOOKUPの3つの制約

  1. 左方向に検索できない: 範囲の先頭列でしか検索できません
  2. 列番号がハードコード: 列の挿入や削除で番号がズレます
  3. 最初の一致しか返さない: 重複があっても先頭の1件だけです

VLOOKUP / XLOOKUP / INDEX+MATCH 比較表

特徴VLOOKUPXLOOKUPINDEX+MATCH
左方向検索不可可能可能
列追加への耐性弱い強い強い
エラー時の既定値IFERROR必要引数で指定可IFERROR必要
デフォルトの一致方式近似一致完全一致完全一致(0指定)
複数列を一括で返す不可可能不可
数式の読みやすさシンプルシンプルやや複雑

どの関数を選べばいい?

判断基準はシンプルです。

  • 左方向の値を取りたいXLOOKUP関数がベスト
  • 複数列の結果を一括で返したい → XLOOKUP関数がベスト
  • 条件に合う複数行を抽出したいFILTER関数の出番
  • シンプルな右方向の表引き → VLOOKUPで十分

VLOOKUPは「古い関数」と言われることもあります。ただ、構文がシンプルで直感的なのは大きなメリットです。左方向検索が不要な場面ではVLOOKUPのほうが読みやすい数式になります。

まとめ

VLOOKUP関数のポイントを振り返ります。

  • 構文は =VLOOKUP(検索キー, 範囲, 番号, 並べ替え済み) の4引数
  • 「並べ替え済み」は省略せずFALSEを明示するのが安全
  • 範囲の絶対参照とIFERRORの組み合わせは実務の必須テクニック
  • #N/Aエラーは「データ型の不一致」や「余分なスペース」を疑う
  • 左方向検索が必要ならXLOOKUP関数を検討

まずは基本の完全一致検索からはじめてみてください。IFERROR関数やワイルドカードを組み合わせれば、実務のほとんどの場面に対応できます。

関連記事

タイトルとURLをコピーしました