VLOOKUP 関数

ヒント: 新しい XLOOKUP 関数 (VLOOKUP の改善バージョン) を使用してみてください。VLOOKUP は、任意の方向に動作し、既定で完全一致を返し、先行タスクよりも簡単かつ使いやすくなっています。

VLOOKUP は、表または範囲のデータを行で検索する必要がある場合に使用します。 たとえば、部品番号で自動車部品の価格を検索したり、従業員 ID に基づいて従業員名を検索したりします。

ヒント: VLOOKUP に関する詳細なヘルプについては 、Microsoft Creators の YouTube ビデオをご覧ください。

その最も簡単な形式で、VLOOKUP 関数は次のようになります。

=VLOOKUP(検索する値、検索する場所、返す値を含む範囲内の列番号、近似値または完全一致 (1/TRUE、または 0/FALSE) を返します)。

お使いのブラウザーではビデオがサポートされていません。

ヒント: VLOOKUP の秘訣は、検索する値 (Fruit) が検索する戻り値 (Amount) の左側に表示されるデータを整理することです。

表内で値を検索するには、VLOOKUP 関数を使用します。

構文

VLOOKUP(検索値, 範囲, 列番号, [検索の型])

次に例を示します。

  • =VLOOKUP(A2,A10:C20,2,TRUE)

  • =VLOOKUP("前田",B2:E7,2,FALSE)

  • =VLOOKUP(A2,'クライアントの詳細'!A:F,3,FALSE)

引数名

説明

検索値    (必須)

検索の対象となる値。 検索する値は、"検索" 引数で指定したセル範囲の最初の table_arrayがあります。

たとえば、テーブル配列 セル B2:D7 にまたがった場合、列 B lookup_valueセルを入力する必要があります。

Lookup_value、 セルへの参照を指定できます。

範囲    (必須)

VLOOKUP が検索値と戻り値を検索するセル範囲。 名前付き範囲またはテーブルを使用し、セル参照の代わりに引数で名前を使用できます。 

セル範囲の最初の列には、セル範囲の 最初の列lookup_value。 セル範囲には、検索する戻り値も含める必要があります。

ワークシートで範囲を選択する方法については、こちらを参照してください。

列番号    (必須)

戻り値を含む列番号 (table_array の最も左の列の場合は 1 から始まる)

検索の型    (省略可)

VLOOKUP を使用して、近似一致を検索するか、完全一致を検索するかを指定する論理値です。

  • 近似一致 - 1/TRUE では、テーブルの最初の列が数値またはアルファベット順に並べ替えと見なされ、最も近い値が検索されます。 この引数を省略した場合は、TRUE が指定されたものとみなされます。 たとえば、=VLOOKUP(90,A1:B100,2,TRUE)。

  • 完全一致 - 0/FALSE は、最初の列の正確な値を検索します。 たとえば、=VLOOKUP("Smith",A1:B100,2,FALSE)。

利用方法

VLOOKUP の構文を作成するには、4 つの情報が必要になります。

  1. 検索する値、検索値とも呼ばれます。

  2. 検索値が含まれるセル範囲。 VLOOKUP が正常に機能するために、検索値は範囲の最初の列に必ず位置している必要があることに注意してください。 たとえば、検索値がセル C2 にある場合、範囲は C 列から始まる必要があります。

  3. 戻り値を含む範囲内の列番号。 たとえば、範囲に B2:D11 を指定する場合は、B を最初の列、C を 2 番目の列として数える必要があります。

  4. 必要に応じて、戻り値として近似一致を検索する場合は TRUE、完全一致を検索する場合は FALSE を指定できます。 何も指定しない場合、既定値は TRUE、つまり近似一致を常に返します。

以上をまとめると次のようになります。

=VLOOKUP(検索値, 検索値を含む範囲, 戻り値を含む範囲内の列番号, 近似一致 (TRUE) または完全一致 (FALSE))。

使用例

VLOOKUP の例を次に示します。

使用例 1

VLOOKUP の使用例 1

使用例 2

VLOOKUP の使用例 2

例 3

VLOOKUP の使用例 3

使用例 4

VLOOKUP の使用例 4

使用例 5

VLOOKUP の使用例 5

VLOOKUP を使用すると、1 つのテーブルに他のすべてのテーブルと共通のフィールドがある限り、複数のテーブルを 1 つのテーブルに結合できます。 これは、データソースを 1 つのテーブルに結合し、データ機能のデータ ソースを新しいテーブルに変更することで、データ ソースとして複数のテーブルをサポートしない古いバージョンの Excel を持つユーザーとブックを共有する必要がある場合に特に便利です (データ機能自体が以前のバージョンでサポートされている場合)。

VLOOKUP を使用して他のテーブルからデータを取得する列を含むワークシート

ここで、列 A ~ F と H にはワークシートの値のみを使用する値または数式が含まれており、残りの列では VLOOKUP と列 A (クライアント コード) と列 B (Attorney) の値を使用して他のテーブルからデータを取得します。

  1. 共通のフィールドを含むテーブルを新しいワークシートにコピーし、名前を付きます。

  2. [データ ツール>をクリック>リレーションシップ] をクリックして、[リレーションシップの管理] ダイアログ ボックスを開きます。

    [リレーションシップの管理] ダイアログ ボックス
  3. 一覧表示されたリレーションシップごとに、次の点に注意してください。

    • テーブルをリンクするフィールド (ダイアログ ボックスのかっこ内に表示されます)。 これは 、VLOOKUP lookup_value に使用する方法です。

    • 関連する参照テーブル名。 これは VLOOKUP table_array の数式で使用できます。

    • 新しい列に必要なデータを含む、関連ルックアップ テーブルのフィールド (列)。 この情報は 、[リレーションシップの管理] ダイアログには表示されません。取得するフィールドを確認するには、関連する参照テーブルを確認する必要があります。 列番号 (A=1) をメモしたい場合は、これは 数式col_index_num 値です。

  4. 新しいテーブルにフィールドを追加するには、手順 3 で収集した情報を使用して、最初の空の列に VLOOKUP 数式を入力します。

    この例では、列 G で Attorney (lookup_value)を使用して、4 番目の列(col_index_num = 4) から 、tblAttorneys (the table_array)の数式 =VLOOKUP([@Attorney],tbl_Attorneys,4,FALSE)から請求率データを取得します。

    数式では、セル参照と範囲参照も使用できます。 この例では、=VLOOKUP(A2,'Attorneys'!A:D,4,FALSE)。

  5. 必要なすべてのフィールドが表示されるまで、フィールドの追加を続ける。 複数のテーブルを使用するデータ機能を含むブックを準備する場合は、データ機能のデータ ソースを新しいテーブルに変更します。

問題

原因

戻された値が正しくない

検索の型がTRUE、または指定を省略した場合、左端列を英字または数値順に並べ替えておく必要があります。 左端列が並べ替えられていない場合、想定外の値が戻される可能性があります。 左端列を並べ替えるか、または FALSE を使用して、完全一致を検索してください。

セルに #N/A と表示される

  • 検索の型がTRUEの場合、検索値の値が範囲の左端列にある最小値よりも小さいと、#N/Aエラー値を返します。

  • 検索の型 が FALSE の場合、#N/A エラー値は、完全に一致する値が見つからなかったことを表します。

VLOOKUP で #N/A エラーを解決する方法の詳細については、「VLOOKUP 関数の #N/A エラーを修正する方法」を参照してください。

セルに #REF! と表示される

配列col_index_num列数より大きい場合は、次の値が#REF。 エラー値。

VLOOKUP で #REF! エラーを解決する方法の詳細については、「エラー値 #REF! を修正する方法.

セルに #VALUE! と表示される

範囲 が 1 未満の場合、#VALUE! エラー値を返します。

VLOOKUP で #VALUE! エラーを解決する方法の詳細については、「VLOOKUP 関数の #VALUE! エラーを修正する方法.

セルに #NAME? が表示される

想定される結果ではなく、#Name? エラー値は、通常、数式に引用符が存在しないという意味です。 人の名前を検索するには、数式で名前を引用符で囲む必要があります。 たとえば、=VLOOKUP("Fontana",B2:E7,2,FALSE) には "Fontana" という名前を入力します。

詳細については、「エラー値 #NAME! を修正する方法.

Excel での #SPILL! と表示される

この特定の #SPILL! エラー 通常は、数式が参照値の共通部分に依存し、列全体を参照として使用しているという意味です。 たとえば、=VLOOKUP(A:A,A:C,2,FALSE) などです。 この問題を解決するには、=VLOOKUP(@A:A,A:C,2,FALSE) のように @演算子を使用して参照を固定します。 または、従来の VLOOKUP メソッドを使用して、列全体ではなく 1 つのセルを参照することもできます。=VLOOKUP(A2,A:C,2,FALSE)。

操作

理由

検索の型には絶対参照を使う

絶対参照を使うと、数式を下方向へコピーした場合に常にまったく同じ検索範囲を参照することができます。

セルの絶対参照については、こちらを参照してください。

数値や日付を文字列として保存しない。

数値または日付の値を検索する場合は、データの最初の列のデータがtable_array値として保存されていないかご確認ください。 文字列として保存されている場合、誤った値や想定外の値が返されることがあります。

左端列を並べ替える

検索の型がTRUE の場合は VLOOKUPを使う前に、範囲の左端列を並べ替えます。

ワイルドカード文字を使う

FALSE range_lookupでlookup_valueテキストの場合は、ワイルドカード文字 (疑問符 (?) とアスタリスク (*) を使用lookup_value。 疑問符は任意の 1 文字に相当します。 アスタリスクは任意の一連の文字列に相当します。 ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前にチルダ (~) を付けます。

たとえば、=VLOOKUP("Fontan?",B2:E7,2,FALSE) は、異なる可能性のある最後の文字で Fontana のすべてのインスタンスを検索します。

データに誤字が含まれていないことを確認する。

左端の列にある文字列を検索するときは、この列にあるデータの先頭または末尾に余分なスペースがないこと、まっすぐな引用符 (' または ") と丸みを帯びた引用符 (‘ または “) が混在しないこと、印刷されない文字が含まれていないことを確認してください。 このいずれかに該当する場合は、予期しない値が返されることがあります。

正確な結果を得るために、CLEAN 関数または TRIM 関数を使って、表のセル値の末尾にある余分なスペースを削除してください。

補足説明

Excel Tech Community では、いつでも専門家に質問できます。Microsoft コミュニティでは、サポートを受けられます。また、Excel User Voice では、新機能についての提案や改善案を送信することができます。

関連項目

クイック リファレンス カード: VLOOKUP のリフレッシュ
クイック リファレンス カード: VLOOKUP のトラブルシューティングのヒント
YouTube: Microsoft Creators の VLOOKUP ビデオ
VLOOKUP 関数#VALUE! エラーを修正する方法
VLOOKUP 関数#N/A エラーを修正する方法
Excel の数式の概要
壊れた数式を回避する方法
数式のエラーを検出する
Excel 関数 (アルファベット順)
Excel 関数 (カテゴリ別)
VLOOKUP (無料プレビュー)

ヘルプを表示

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×