Excel VLOOKUP 関数
Excel のVLOOKUP 関数は、テーブルまたは範囲の最初の列で指定された値を垂直方向に検索し、同じ行の別の列から対応する値を返す強力なツールです。VLOOKUP は非常に便利ですが、初心者にとっては少し難しく感じられるかもしれません。このチュートリアルでは、引数のステップバイステップの解説、実践的な使用例、そしてVLOOKUP 関数を使う際によく発生するエラーとその解決策をご紹介し、あなたが VLOOKUP をしっかりマスターできるようサポートします。

関連動画
引数のステップバイステップ解説
上記のスクリーンショットに示されているように、VLOOKUP 関数は指定された ID 番号に基づいてメールアドレスを検索するのに使われています。ここでは、この例における VLOOKUP の使い方を、各引数をステップバイステップで詳しく解説します。
手順1:VLOOKUP 関数を開始する
結果を出力するセル(この例では H6)を選択し、数式バーに次の内容を入力して、VLOOKUP 関数を開始しましょう。
=VLOOKUP(
手順2:検索値を指定する
まず、VLOOKUP 関数で検索値(探しているもの)を指定します。ここでは、特定の ID 番号が入力されているセル G6 を参照しています。
=VLOOKUP(G6

手順3:テーブル配列を指定する
次に、検索したい値と返したい値の両方を含むセル範囲を指定します。この例では、範囲 B6:E12 を選択しているため、数式は次のようになります。
=VLOOKUP(G6,B6:E12

=VLOOKUP(G6,$B$6:$E$12
手順4:値を返す列を指定する
次に、値を返す列を指定してください。
この例では、ID 番号に基づいてメールアドレスを取得する必要があるため、VLOOKUP 関数にデータ範囲の4 列目から値を返すよう指示する「4」を入力します。
=VLOOKUP(G6,B6:E12,4

手順5:近似一致または完全一致を指定する
最後に、近似一致と完全一致のどちらを求めるかを決めましょう。
- 完全一致を検索するには、最後の引数にFALSEを指定する必要があります。
- 近似一致を検索するには、最後の引数にTRUEを指定するか、そのまま空白にしてください。
この例では完全一致を指定するために FALSE を使用しており、その結果、数式は次のようになります。
=VLOOKUP(G6,B6:E12,4,FALSE

Enter キーを押して結果を取得する

上記の例で各引数を一つずつ説明したことで、VLOOKUP 関数の構文とその引数がよりわかりやすくなりました。
構文と引数
=VLOOKUP (lookup_value, table_array, col_index, [range_lookup])
- 検索値(必須):検索する値(実際の値またはセル参照)。この値は、table_array の最初の列に含まれている必要があります。
- テーブル配列(必須):検索値の列と返す値の列の両方を含むセル範囲。
- 列インデックス(必須):返す値が含まれる列の番号を示す整数です。table_array の左端列を1 として数えます。
- 範囲検索(任意):VLOOKUP 関数で近似一致と完全一致のどちらを実行するかを指定する論理値。
- 近似一致-この引数をTRUEに設定するか、1のまま空白にしてください。空白。
重要:近似一致で検索するには、table_array の最初の列の値を昇順に並べ替えておく必要があります。そうしないと、VLOOKUP が誤った結果を返す可能性があります。 - 完全一致-この引数をFALSEに設定するか、0にしてください。
- 近似一致-この引数をTRUEに設定するか、1のまま空白にしてください。空白。
使用例1:VLOOKUP における完全一致と近似一致
VLOOKUP を使う際に「完全一致」と「近似一致」の違いがよく分からないという方は、このセクションでその疑問をスッキリ解消できます。
VLOOKUP での完全一致
この例では、範囲 E6:E8 にリストされたスコアに基づいて対応する名前を検索するため、セル F6 に次の数式を入力し、オートフィルハンドルを F8 までドラッグしてください。この数式では、完全一致の検索を実行するために、最後の引数としてFALSEを指定します。
=VLOOKUP(E6,$B$6:$C$12,2,FALSE)
ただし、スコア98 はデータ範囲の最初の列に存在しないため、VLOOKUP 関数は#N/A エラーを返します。

VLOOKUP での近似一致
上記の例を引き続き使用し、最後の引数をTRUEに変更すると、VLOOKUP は近似一致で検索を実行します。一致する値が見つからない場合は、検索値よりも小さい最大の値を自動的に探し出し、その対応する結果を返します。
=VLOOKUP(E6,$B$6:$C$12,2,TRUE)
スコア98 は存在しないため、VLOOKUP は98 未満で最も大きい値(つまり95)を検索し、そのスコア95 に対応する名前を近似一致の結果として返します。

- この近似一致(大文字と小文字を区別しない)を使用するには、table_array の最初の列の値をあらかじめ昇順に並べ替えておく必要があります。そうでないと、VLOOKUP が正しい値を返さない可能性があります。
- ここでは、VLOOKUP 関数内のテーブル配列($B$6:$C$12)を固定することで、複数の検索値に対しても一貫したデータセットを素早く参照できるようにしています。
使用例2:複数条件で VLOOKUP を使用する
このセクションでは、Excel で複数の条件を使って VLOOKUP を実行する方法をご紹介します。以下のスクリーンショットのように、指定された名前(セル H5)と部門(セル H6)に基づいて給与を検索するには、次の手順に従ってください。

手順1:検索列の値を結合するためのヘルパー列を追加する
この場合、名前列と部門列の値を結合するには、ヘルパー列を作成する必要があります。
- データ範囲の左側に補助列を追加し、その列に見出しを付けてください。スクリーンショットをご参照ください。
- この補助列で、見出しの下にある最初のセルを選択し、数式バーに次の数式を入力してEnterキーを押してください。
=C6&" "&D6注:この数式では、アンパサンド(&)を使って2 つの列のテキストを結合し、1 つのテキストにまとめています。- C6は、結合対象のName 列のセル名です。D6は、結合対象のDepartment 列の先頭となる部署です。
- これらの2 つのセルの値は、スペースを挟んで連結されます。
- この結果セルを選択して、オートフィルハンドルを下にドラッグすれば、同じ列の他のセルにもこの数式が適用されます。
手順2:指定された条件で VLOOKUP 関数を適用する
結果を表示するセル(ここでは I7)を選択し、数式バーに次の数式を入力してから、Enterキーを押してください。
=VLOOKUP(I5& " "&I6,B6:F12,5,FALSE)
結果

- ヘルパー列は、データ範囲の先頭列として使用する必要があります。
- 現在、給与列はデータ範囲の5 列目に該当するため、数式内の列インデックスとして数値 5を使用します。
- 条件をI5およびI6でヘルパー列と同様の方法で連結し、その連結結果を数式内のlookup_value 引数として使用します。
- また、lookup_value 引数に直接2 つの条件を記述し、スペースで区切ることもできます(条件がテキストの場合、二重引用符で囲むことを忘れないでください)。
=VLOOKUP("Albee IT",B6:F12,5,FALSE) - より良い代替手段――複数条件での検索が数秒で可能に
検索 - 複数条件検索機能を使えば、Kutools for Excelで複数条件の検索を簡単に、わずか数秒で実行できます。今すぐ30 日間のフル機能無料トライアルを開始!
VLOOKUP の一般的なエラーと解決策
このセクションでは、VLOOKUP を使用する際に発生しやすい一般的なエラーと、その対処法をご紹介します。
| 一般的な VLOOKUP エラーの概要: | ||||
| 原因1:検索値が最初の列にありません | ||||
| 原因2:検索値が見つかりません | ||||
| ------ | 原因3:検索値が最小値より小さい | |||
| 原因4:数値が文字列として書式設定されています | ||||
| 原因5:table_array が固定されていません | ||||
| ------ | 原因1:検索値が255 文字を超えています | |||
| 原因2:col_index が1 未満です | ||||
| ------ | 原因1:col_index が列数を超えています | |||
| ------ | 原因1:検索列が昇順で並べ替えられていません | |||
| 原因2:列が挿入または削除されました | ||||
#N/A エラーが返される
VLOOKUP で最もよく発生するエラーは「#N/A」エラーです。これは、Excel が検索値を見つけられなかったことを意味します。以下に、VLOOKUP が「#N/A」エラーを返す主な理由を示します。
理由1:検索値が table_array の最初の列にない
Excel の VLOOKUP の制限の一つは、検索を左から右方向にしか行えないことです。そのため、検索値は table_array の最初の列に配置する必要があります。
下のスクリーンショットに示されているように、指定された職位()営業マネージャー)に基づいて名前を返したい場合、検索値が table_array の2 列目にあり、かつ返す値が検索列の左側にあるため、VLOOKUP は#N/A エラーを返します。

解決策
このエラーを修正するには、以下のいずれかの解決策をご利用いただけます。
- 列の順序を変更するテーブル配列で検索列が最初の列に来るように、列の順序を変更できます。
- INDEX 関数と MATCH 関数を組み合わせて使う
INDEX 関数と MATCH 関数を組み合わせて使う=INDEX(B6:B12,MATCH(F6,C6:C12,0))
- XLOOKUP 関数を使用する(Excel 365、Excel 2021 以降で利用可能)
=XLOOKUP(F6,C6:C12,B6:B12)
理由2:検索値が検索列に見つからない(完全一致の場合)
VLOOKUP が#N/A エラーを返す最も一般的な理由の一つは、検索値が見つからないことです。
下の例のように、E6 にあるスコア98 を使って名前を検索しようとしていますが、このスコアがデータ範囲の最初の列に存在しないため、VLOOKUP 関数は#N/A エラーを返します。

解決策
このエラーを修正するには、以下のいずれかの解決策をお試しください。
- VLOOKUP で検索値よりも小さい最大の値を検索するには、最後の引数をFALSE(完全一致)からTRUE(近似一致)に変更してください。詳しくは、使用例1:VLOOKUP による完全一致と近似一致をご覧ください。
- 最後の引数を変更することなく、検索値が見つからない場合に通知を受け取るには、VLOOKUP 関数を IFERROR 関数で囲んでください:
=IFERROR(VLOOKUP(E8,$B$6:$C$12,2,FALSE),"Not found")
理由3:検索値が検索列の最小値よりも小さい(近似一致の場合)
下のスクリーンショットに示されているように、近似一致による検索を実行しています。この例では、探している値(ID 番号1001)が検索列の最小値1002 よりも小さいため、VLOOKUP 関数は#N/A エラーを返します。

解決策
以下の2 つの解決策があります。
- 検索値が検索列内の最小値であることをご確認ください。
- 検索値が見つからなかった場合にExcel が通知するようにするには、次のように VLOOKUP 関数を IFERROR 関数内にネストしてください:
=IFERROR(VLOOKUP(G6,B6:E12,4,TRUE),"Not found")
理由4:数値がテキスト形式で書式設定されている
下のスクリーンショットに示されているように、この例における #N/A エラーは、検索セル(G6)と元のテーブルの検索列(B6:B12)のデータ型が一致していないことに起因しています。具体的には、G6 の値は数値であるのに対し、範囲 B6:B12 の値はテキスト形式で書式設定された数値です。

解決策
この問題を解決するには、検索値を数値に再変換する必要があります。以下の2 つの方法があります。
- 「数値に変換」機能を適用するテキストから数値に変換したいセルをクリックし、セルの横にあるこのボタン
をクリックして、「数値に変換」を選択します。
- 便利なツールでテキストと数値を一括変換
テキストと数値の相互変換機能を使えば、Kutools for Excelでテキストから数値へ、またはその逆へ簡単に一括変換できます。今すぐ30 日間のフル機能無料トライアルを開始!
理由5:VLOOKUP 数式を他のセルにドラッグした際に table_array が固定されていない
以下のスクリーンショットに示すように、E6 および E7 セルには2 つの検索値が入力されています。F6 セルで最初の結果を取得した後、VLOOKUP 関数を F6 セルから F7 セルにドラッグすると、#N/A エラーが返されます。これは、セル参照(B6:C12)が既定で相対参照となっており、数式を下の行にコピーする際に自動的に調整されるためです。その結果、テーブル配列が B7:C13 にずれてしまい、そこに検索対象のスコア「73」が含まれていないためです。

解決策
テーブル配列を固定して一定に保つには、セル参照の行番号と列アルファベットの前に$記号を追加する必要があります。Excel での絶対参照について詳しく知りたい場合は、次のチュートリアルをご覧ください:Excel の絶対参照(設定方法と使用方法)。

#VALUE!エラーが返される
以下の条件に該当する場合、VLOOKUP 関数は#VALUE!エラーを返すことがあります。
原因1:検索値が255 文字を超えている
以下のスクリーンショットに示すとおり、H4 セルの検索値が255 文字を超えているため、VLOOKUP 関数は#VALUE!エラーを返します。

解決策
この制限を回避するには、より長い文字列を処理可能な別の検索関数をご利用ください。以下のいずれかの数式をお試しください。
- INDEX 関数と MATCH 関数:
=INDEX(E5:E11, MATCH(TRUE, INDEX(B5:B11=H4, 0), 0))
- XLOOKUP 関数(Excel 365、Excel 2021 以降で利用可能):
=XLOOKUP(H4,B5:B11,E5:E11)
原因2:col_index 引数が1 未満である
列インデックスは、返したい値が含まれるテーブル配列内の列番号を指定します。この引数には、テーブル配列内の有効な列に対応する正の数値を指定する必要があります。
列インデックスに1 未満(ゼロまたは負の値)を指定すると、VLOOKUP 関数はテーブル配列内で該当する列を特定できなくなります。
解決策
この問題を修正するには、VLOOKUP 関数の列インデックス引数が、テーブル配列内の有効な列に対応する正の整数であることをご確認ください。
#REF!エラーが返される
このセクションでは、VLOOKUP 関数が#REF!エラーを返す主な原因の一つと、その解決策をご紹介します。
原因:col_index 引数が列数を超えている
以下のスクリーンショットからも分かるように、テーブル配列には列が4 つしかありません。しかし、VLOOKUP 数式で指定されている列インデックスは5 となっており、テーブル配列の列数を超えています。そのため、VLOOKUP 関数は該当する列を特定できず、最終的に#REF!エラーを返してしまいます。

解決策
- 正しい列番号を指定しましょうVLOOKUP 関数の列インデックス引数が、テーブル配列内の有効な列を確実に指しているか確認してください。
- 指定した列見出しに基づいて自動的に列番号を取得するテーブルに列が多数含まれている場合、正しい列インデックス番号を特定するのは難しいことがあります。そんなときは、VLOOKUP 関数の中に MATCH 関数をネストして、特定の列見出しに対応する列位置を自動で検索できます。
=VLOOKUP(G6,B6:E12,MATCH("Email",B5:E5,0),FALSE)注:上記の数式では、MATCH(「Email」,B5:E5, 0) 関数を使って、範囲 B6:E12 内の「Email」列の列番号を取得しています。この例では結果が4 となり、それが VLOOKUP 関数の col_index_num 引数として使用されます。
誤った値が返される
VLOOKUP 関数が正しい結果を返さない場合、以下の原因が考えられます。
原因1:検索列が昇順で並べ替えられていない
最後の引数をTRUEに設定した場合(または)空欄のままにした場合)、近似一致が実行されますが、検索列が昇順で並べ替えられていないと、結果が不正確になる可能性があります。

解決策
この問題を解決するには、検索列を昇順に並べ替えてください。手順は以下の通りです。
- 検索列のデータセルを選択し、「データ」タブに移動して、「並べ替えとフィルター」グループ内の「並べ替え(最小から最大へ)」をクリックします。
- 「並べ替えの警告」ダイアログボックスで、「選択範囲を拡張する」オプションを選択して、「OK」をクリックしてください。
原因2:列が挿入または削除されている
以下のスクリーンショットに示すとおり、本来取得したい値はテーブル配列の4 列目にありますので、列インデックス番号を4 と指定しました。しかし、新しい列が挿入されたことで、該当する結果列はテーブル配列の5 列目にずれてしまい、VLOOKUP 関数が誤った列から値を返してしまうことになります。

解決策
以下の2 つの解決策をご用意しています。
- 返すカラムの位置に合わせて、列のインデックス番号を手動で変更できます。この場合、数式は次のように変更する必要があります:
=VLOOKUP(H6,B6:F12,5,FALSE) - 常に特定の列(この例では「Email」列など)から結果を取得したい場合は、次の数式を使えば、テーブル配列に列が追加または削除されても、指定した列見出しに基づいて自動的に正しい列インデックスを参照できます。
=VLOOKUP(H6,B6:F12,MATCH("Email",B5:E5,0),FALSE)
その他の関数に関する注意事項
- VLOOKUP は左から右方向にのみ値を検索します。
検索値は左端の列に配置し、結果値はその右側のいずれかの列に存在している必要があります。 - 最後の引数を空白のままにすると、VLOOKUP は既定で近似一致を使用します。
- VLOOKUP 関数は大文字と小文字を区別しません。
- 複数の一致がある場合、VLOOKUP はテーブル配列内の行の順序に従い、最初に見つかった一致のみを返します。
関連記事
20+ Excel 初心者・上級者向け VLOOKUP 使用例
このチュートリアルでは、基本から応用まで数十の実例をステップ・バイ・ステップで紹介し、Excel での VLOOKUP 関数の使い方を徹底解説します。
右から左への VLOOKUP
他の任意の列で特定の値を検索し、その左側にある対応する値を取得したい場合、このチュートリアルの方法を使えば簡単に実現できます。
下から上への VLOOKUP
このチュートリアルでは、下から上に向かって一致する値を検索する2 つの方法をご紹介します。
大文字と小文字を区別して VLOOKUP を実行する
Excel で大文字と小文字を区別して VLOOKUP を実行したい場合は、このチュートリアルで紹介する方法が役立ちます。
VLOOKUP で元の書式を保持する
このチュートリアルでは、Excel で VLOOKUP を使用する際に、結果セルのすべての書式をそのまま維持する方法をご紹介します。
最高の Office 生産性ツール
| 🤖 | KUTOOLS AI アシスト:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート作成| 拡張機能呼び出し… |
| 人気機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択ドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲と列を比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/イタリック/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|他にも多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を大幅に高める300 以上の高度な機能を提供し、時間を大幅に節約します。必要な機能を今すぐ入手するには、こちらをクリックしてください…
Office Tab が Office にタブインターフェースを導入し、作業を大幅に簡単にします
- Word、Excel、PowerPoint、Publisher、Access、Visio、Project でタブを使った編集と閲覧を有効にします。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成したりできます。
- 生産性が50%向上し、毎日数百回のマウスクリックを削減します!
すべてのKutools アドイン。1 つのインストーラー
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook & PowerPoint アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワフルに— Office アプリ間で生産性がシームレスに向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最もお得— 個別アドイン購入より節約





をクリックして、「数値に変換」を選択します。
