「社員番号を入れたら、部署名が自動で表示される」。こうした仕組みをGoogleスプレッドシートで作るなら、VLOOKUP関数が定番の選択肢です。Excelで使ったことがある方なら、ほぼ同じ感覚で使えます。
この記事ではスプレッドシートのVLOOKUPを基本から応用まで解説します。4つの引数の意味、#N/Aエラーの原因と対処法まで、実務例を交えて説明します。INDEX/MATCHやXLOOKUPへの移行判断フローも掲載しているので、ぜひ参考にしてください。
スプレッドシートのVLOOKUP関数とは?
VLOOKUPの読み方・意味
VLOOKUPは「Vertical Lookup(垂直検索)」の略です。読み方は「ブイルックアップ」です。
VLOOKUP関数は、表の先頭列(左端の列)を縦方向に検索します。一致した行から、指定した列の値を返す仕組みです。
たとえば「社員番号E001に対応する部署名を取得する」。こうした「表引き」作業を、数式1つで片付けられます。
VLOOKUPでできること
VLOOKUP関数でできる主な操作をまとめました。
- マスタ表から名前・部署・価格などを自動取得する
- 別シートに格納したデータを参照する
- 近似一致(TRUE)で料金ランクや評価判定をする
- ワイルドカードを使って部分一致検索をする
横方向(水平方向)に検索したい場合は、HLOOKUP関数が対応します。
スプレッドシートの基本操作から確認したい方は、Googleスプレッドシートの使い方入門もご覧ください。
VLOOKUPの書き方(構文と4つの引数)
基本構文
VLOOKUP関数の構文は以下のとおりです。
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
引数は4つです。最後の「検索の型」だけ省略できます。
引数一覧
| 引数 | 必須/省略可 | 内容 | 指定例 |
|---|---|---|---|
| 検索値 | 必須 | 探したいキー値。先頭列で検索する | A2 |
| 範囲 | 必須 | 検索対象のデータ範囲。先頭列に検索値を含むこと | A:D |
| 列番号 | 必須 | 返す値がある列の番号(範囲の左端が1) | 3 |
| 検索の型 | 省略可 | FALSE=完全一致 / TRUE=近似一致 | FALSE |
NOTE
Googleスプレッドシートの公式ヘルプでは「検索キー・番号・並べ替え済み」と表記されます。Excelの「検索値・列番号・検索の型」と呼び名は違いますが、動作は同じです。
完全一致(FALSE)と近似一致(TRUE)の違い
第4引数「検索の型」の使い分けを説明します。
完全一致(FALSE)
検索値と完全に一致するデータだけを探します。一致するデータがなければ#N/Aエラーが返ります。コードや名前の検索など、実務の多くの場面でFALSEを使います。
=VLOOKUP(A2, マスタ!A:D, 3, FALSE)
近似一致(TRUE)
検索値以下の最大値を返します。料金表や成績ランクの判定などに使います。先頭列が昇順(小→大)でソートされている必要があります。
=VLOOKUP(A2, ランク表!A:B, 2, TRUE)
NOTE
第4引数を省略するとデフォルトはTRUE(近似一致)です。「なぜか違う値が返る」の原因の多くはこの省略です。迷ったらFALSEを明示してください。
VLOOKUPの基本的な使い方【実務例で解説】
この記事では「社員名簿」を例に使います。シートには社員番号(A列)・氏名(B列)・部署(C列)・役職(D列)が入力されています。
社員番号から部署名を取得する
F2セルに社員番号を入力し、G2セルに数式を書きます。

=VLOOKUP(F2, A:D, 3, FALSE)

各引数の意味は次のとおりです。
- F2: 検索値(入力した社員番号)
- A:D: 範囲(社員名簿全体)
- 3: 範囲の左から3列目(C列の部署)を返す
- FALSE: 完全一致で検索
F2に「E001」と入力すると、A列からE001を探します。一致した行のC列(部署)の値がG2に表示されます。

役職(D列)を取得したい場合は、列番号を4に変えます。
=VLOOKUP(F2, A:D, 4, FALSE)
別シートのデータを参照する
実務では社員名簿が別シートにあるケースが多いです。別シートの範囲は シート名!範囲 の形式で指定します。
=VLOOKUP(F2, 社員名簿!A:D, 3, FALSE)
シート名に空白や特殊文字がある場合は、シングルクォーテーションで囲みます。
=VLOOKUP(F2, '社員 名簿'!A:D, 3, FALSE)
NOTE
別シートの範囲はマウスで選択して入力すると楽です。入力欄でクリックしたまま別シートに切り替え、範囲をドラッグすれば自動でシート名が入力されます。
数式を下方向にコピーする場合
数式を複数行にコピーするときは、範囲を絶対参照($)で固定します。F4キーを押すと$マークが付きます。
=VLOOKUP(F2, $A$1:$D$100, 3, FALSE)
検索値F2は相対参照のまま、範囲だけ固定するのがポイントです。
VLOOKUPの応用テクニック
IFERRORで#N/Aエラーに対処する
VLOOKUPは検索値が見つからないと#N/Aエラーを返します。IFERROR関数(エラー時に代わりの値を返す関数)で囲むと、エラーを別の値に置き換えられます。
=IFERROR(VLOOKUP(F2, 社員名簿!A:D, 3, FALSE), "該当なし")

第2引数に「該当なし」を指定すると、エラー時にその文字列が表示されます。空欄にしたい場合は "" を指定します。
=IFERROR(VLOOKUP(F2, 社員名簿!A:D, 3, FALSE), "")

NOTE
IFERROR関数はすべてのエラーを捕捉します。#N/Aだけに対処したい場合は、IFNA関数が適しています。IFNAは#N/A以外のエラー(#REF!など)はそのまま表示します。
ワイルドカードで部分一致検索する
検索の型をFALSEにした状態でワイルドカードが使えます。ワイルドカードとは、任意の文字に一致する特殊記号です。
*(アスタリスク): 任意の文字列に一致?(クエスチョンマーク): 任意の1文字に一致
「営業」を含む部署の社員を検索する例です。
=VLOOKUP("*営業*", A:D, 2, FALSE)
セル参照と組み合わせる場合は & で連結します。
=VLOOKUP("*"&H2&"*", A:D, 2, FALSE)
NOTE
ワイルドカード検索は、最初に一致した1件だけを返します。複数件すべてを取得したい場合はFILTER関数が向いています。
ARRAYFORMULAで複数セルに一括適用する
ARRAYFORMULA関数(配列数式を一括処理する関数)とVLOOKUPを組み合わせます。1つの数式を入力するだけで、複数行に結果を出力できます。
=ARRAYFORMULA(VLOOKUP(F2:F10, 社員名簿!A:D, 3, FALSE))
F2:F10に入力した社員番号に対して、G列に部署名を一括表示します。
IFERRORと組み合わせてエラーも一括処理できます。
=ARRAYFORMULA(IFERROR(VLOOKUP(F2:F10, 社員名簿!A:D, 3, FALSE), ""))
NOTE
Googleスプレッドシートでは検索値に範囲を指定するとスピル(自動展開)する場合があります。ただし明示的にARRAYFORMULAで囲むほうが安全です。
ARRAYFORMULAの詳しい使い方は、ARRAYFORMULA関数の使い方をご覧ください。
複数条件で検索する(ヘルパー列を使う)
VLOOKUPは1つの検索列しか指定できません。「部署と役職の両方が一致する社員を取得する」など、複数の条件を組み合わせたい場合は、ヘルパー列(作業列)で条件を結合する方法が定番です。
手順1: 社員名簿にヘルパー列を追加し、部署(C列)と役職(D列)を & で結合します。
=C2&"-"&D2
C2が「営業部」、D2が「部長」であれば「営業部-部長」という値になります。
手順2: VLOOKUPの検索値でも同じ形式で条件を結合して渡します。
=VLOOKUP(G2&"-"&H2, ヘルパー列を先頭にした検索テーブル, 2, FALSE)
G2に「営業部」、H2に「部長」を入力すると、一致する社員を検索できます。
NOTE
ヘルパー列方式はシートの構成が複雑になります。新規で組む場合は、複数条件を直接指定できるXLOOKUPやQUERY関数の使用も検討してください。
VLOOKUPでよくあるエラーと対処法
#N/Aエラー(値が見つからない)
最もよく出るエラーです。主な原因と対処法をまとめました。
| 原因 | 確認方法 | 対処法 |
|---|---|---|
| 検索値がデータに存在しない | マスタ側に該当データがあるか確認 | データを追加するかIFERRORで対処 |
| 前後にスペースがある | LEN関数で文字数を確認 | TRIM関数(余分なスペースを除去する関数)で前処理 |
| データ型が違う(数値と文字列) | セルの表示形式を確認 | VALUE関数(文字列を数値に変換する関数)で型を統一 |
| 近似一致で昇順でない | 先頭列の並び順を確認 | データを昇順ソートするかFALSEを指定 |
| 範囲の先頭列に検索値がない | VLOOKUPの第2引数を確認 | 範囲を正しく設定し直す |

#REF!エラー(列番号が範囲外)
列番号が範囲の列数を超えると発生します。たとえば3列の範囲(A:C)に対して列番号4を指定した場合です。
=VLOOKUP(F2, A:C, 4, FALSE) → #REF!エラー
列の削除後にも発生しやすいため、列番号と範囲の列数を確認してください。
#VALUE!エラー(引数の型が不正)
列番号に0以下の数値を指定した場合に発生します。
=VLOOKUP(F2, A:D, 0, FALSE) → #VALUE!エラー
列番号は1以上の整数を指定してください。
ExcelのVLOOKUPとの違い
ExcelとGoogleスプレッドシートのVLOOKUPは、基本構文が完全互換です。Excelファイル(.xlsx形式)をスプレッドシートで開いても、VLOOKUPはそのまま動作します。
ただし、細かい点でいくつか違いがあります。
動作仕様の違い
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| 配列検索(スピル) | 検索値に範囲を指定すると自動でスピル | Excel 365以降で対応 |
| XLOOKUP関数 | 2022年から利用可能 | Microsoft 365・Excel 2021以降 |
| 正規表現マッチ | REGEXMATCH関数との組み合わせが可能 | 非対応(VBAが必要) |
スピルとは、数式1つで複数セルに結果を自動展開する機能です。
移行時の注意点
ExcelからスプレッドシートにVLOOKUPを移行する際の注意点です。
- 引数の名称は違うが、動作・構文は同一
Ctrl+Shift+Enterで入力した配列数式は不要(スプレッドシートでは自動スピル)- 絶対参照($)はそのまま引き継がれる
詳しい比較はExcelとGoogleスプレッドシートの違い・使い分けガイドをご覧ください。
VLOOKUP以外の選択肢|INDEX/MATCH・XLOOKUPとの使い分け
VLOOKUPの限界
VLOOKUPにはいくつかの制約があります。
- 左方向への検索ができない: 検索値は必ず範囲の先頭列(左端)に必要
- 列番号がハードコード: 列を挿入・削除すると番号がズレる
- 先頭の1件しか返さない: 同じ検索値が複数行あっても最初の行だけ
INDEX/MATCHの強み
INDEX/MATCHはINDEX関数とMATCH関数を組み合わせた手法です。INDEX関数(指定した行・列の値を返す関数)とMATCH関数(検索値の行番号を返す関数)を組み合わせます。
=INDEX(返す範囲, MATCH(検索値, 検索範囲, 0))
社員番号からC列(部署)を取得する例です。
=INDEX(C:C, MATCH(F2, A:A, 0))
VLOOKUPとの主な違いをまとめます。
- 検索列が左端でなくてもよい(右→左の検索が可能)
- 列参照を使うため、列の挿入・削除でズレない
- 10万行超の大量データでは処理が速い傾向がある
INDEX関数とMATCH関数の詳しい使い方は各記事をご覧ください。
XLOOKUPという新しい選択肢
XLOOKUPはGoogleスプレッドシートに2022年に追加された関数です。VLOOKUPとINDEX/MATCHの両方の制約を解消しています。
=XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからない場合], [一致モード], [検索モード])
社員番号から部署を取得する例です。
=XLOOKUP(F2, A:A, C:C, "該当なし")
VLOOKUPと比べた優位点をまとめます。
- 検索列は先頭(左端)でなくてもよい
- 第4引数でエラー時の値を指定できる(IFERROR不要)
- 右→左、下→上の逆方向検索が可能
- 複数列をまとめて返せる
どれを使えばいい?選び方の目安
用途に応じて関数を選びましょう。
- シンプルな右方向検索 → VLOOKUPで十分
- 左方向の検索が必要 → XLOOKUPを使う
- 列の追加・削除が多い → XLOOKUPまたはINDEX/MATCHを使う
- 大量データ(10万行超) → INDEX/MATCHが高速になる傾向
- 既存のVLOOKUP数式 → 正常に動いているなら書き換えは不要
新規で数式を組む場合は、XLOOKUPを選ぶのが現在のベストプラクティスです。
まとめ
スプレッドシートのVLOOKUP関数の要点をまとめます。
- 構文は
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])の4引数 - 第4引数はFALSEを明示する(省略するとTRUEがデフォルト)
- 数式を下方向にコピーするときは範囲を絶対参照で固定する
- エラー対処はIFERROR関数で囲むのが定番
- #N/Aエラーの主な原因はスペース混入・データ型の不一致
- 複数条件の検索はヘルパー列で条件を結合して対応する
- 左方向の検索が必要な場合はXLOOKUPを検討する
まずは基本の完全一致検索からはじめてみてください。IFERROR関数を組み合わせれば、実務の多くの場面に対応できます。
基本構文だけ確認したい方は、スプレッドシートのVLOOKUP関数の使い方もご覧ください。
関連記事
- スプレッドシートのVLOOKUP関数の使い方|別シート参照・エラー対処まで解説
- Googleスプレッドシートの使い方入門(Excelユーザー向け)
- ExcelとGoogleスプレッドシートの違い・使い分けガイド
- スプレッドシートのINDEX関数の使い方
- スプレッドシートのMATCH関数の使い方
- スプレッドシートのHLOOKUP関数の使い方
- スプレッドシートのARRAYFORMULA関数の使い方
- スプレッドシートのIFNA関数の使い方

