VLOOKUP 関数

Excel

数式と関数

参照

参照

VLOOKUP 関数

VLOOKUP 関数

Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 for Mac Excel 2016 その他…表示数を減らす

ヒント: 新しい target=”_blank” title=”XLOOKUP” rel=”noopener”>XLOOKUP 関数を使用してみてください。これは、VLOOKUP の改良版であり、任意の方向で機能し、既定で完全一致を返します。これにより、以前の関数よりも使いやすく便利になります。

テーブルまたは範囲の内容を行ごとに検索する場合は、VLOOKUP を使用します。 たとえば、自動車部品の価格を部品番号で検索するか、従業員 ID に基づいて従業員名を検索します。

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

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

ヒント: VLOOKUP の使い方のコツは、調べたい値 (結果) が、調べたい戻り値 (量) の左側に来るようにデータを整理することです。

__

技術的詳細

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

構文

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

次に例を示します。

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

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

  • =VLOOKUP(A2,’Client Details’!A:F,3,FALSE)

引数名説明
検索値 (必須)検索の対象となる値。 調べたい値は、引数の 範囲 で指定したセル範囲の最初の列になければなりません。 たとえば、** 範囲** がセル B2:D7 にまたがる場合、検索値は B列 になければなりません。 **検索値 ** は、セルへの値または参照を指定できます。
範囲 (必須)VLOOKUP が** 検索値** と戻り値を検索するセル範囲。 名前付き範囲またはテーブルを使用でき、セル参照の代わりに引数に名前を使用できます。 セル範囲の最初の列には、** 検索値** が含まれている必要があります。 セル範囲には、検索する戻り値も含める必要があります。 target=”_blank” title=”ワークシートで範囲を選択” rel=”noopener”>ワークシートで範囲を選択する方法については、こちらを参照してください。
列番号 (必須)戻り値を含む列の番号 (範囲 の左端の列は 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 (B3,B2:E7,2,FALSE)

VLOOKUP は、table_array B2:E7 の最初の列 (列 B) で Fontana を検索し、table_array の 2 番目の列 (列 C) から Olianne を返します。 False は完全一致を返します。](https://support.content.office.net/ja-jp/media/0d08ad32-9e64-4578-89af-4c85683394b6.png)

使用例 2

![=VLOOKUP (102,A2:C7,2,FALSE)

VLOOKUP は、A2:C7 範囲の 2 番目の列 (列 B) の 102 (lookup_value) の姓の完全一致 (FALSE) を検索し、Fontana を返します。](https://support.content.office.net/ja-jp/media/ddaf561c-1df2-4f13-a136-a79e65a3ee6f.png)

例 3

![=IF(VLOOKUP(103,A1:E7,2,FALSE)="Souse","Located","Not found")

IF は、VLOOKUP が A1:E7 (table_array) の 103 (lookup_value) に対応する従業員の姓として Sousa を返すかどうかを確認します。 103 に対応する姓は Leal であるため、IF 条件は false で、Not Found が表示されます。](https://support.content.office.net/ja-jp/media/28e39ac1-7552-4258-90d5-b38b37deb2b1.png)

使用例 4

![=INT(YEARFRAC(DATE(2014,6,30),VLOOKUP(105,A2:E7,5,FLASE),1))

VLOOKUP は、A2:E7 範囲 (table_array) の 109 (lookup_value) に対応する従業員の生年月日を検索し、03/04/1955 を返します。 次に、YEARFRAC はこの生年月日を 2014/6/30 から減算し、値を返します。この値は INY によって整数 59 に変換されます。](https://support.content.office.net/ja-jp/media/d9011e9d-e702-4fac-8434-1112907e96e3.png)

使用例 5

![IF(ISNA(VLOOKUP(105,A2:E7,2,FLASE))=TRUE,"Employee not found",VLOOKUP(105,A2:E7,2,FALSE))

IF は、VLOOKUP が列 B から 105 (lookup_value) の姓の値を返すかどうかを確認します。 VLOOKUP で姓が見つかった場合、IF は姓を表示し、それ以外の場合は、「従業員が見つかりません」を返します。 ISNA では、VLOOKUP が #N/A を返す場合、エラーは #N/A ではなく「従業員が見つかりません」に置き換えられます。

この例では、戻り値は Burke です。これは 105 に対応する姓です。](https://support.content.office.net/ja-jp/media/dcfda044-79a4-40e1-a2c2-878a90ab8ecb.png)

__

VLOOKUP を使用して複数のテーブルのデータを 1 つのワークシートに結合する

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

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

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

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

3. 一覧表示されているリレーションシップごとに、次の点に注意してください。

 * テーブルをリンクするフィールド (ダイアログ ボックスのかっこ内に表示されます)。 これは、VLOOKUP 数式の _**検索値**_ です。

 * 関連する参照テーブル名。 これは、VLOOKUP 数式の **_範囲_** です。

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

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

この例では、G 列で 弁護士 (検索値) を使用して、弁護士ワークシートのテーブル tblAttorneys (範囲) の 4 列目 (列番号 = 4) から、=VLOOKUP([@Attorney],tbl_Attorneys,4,FALSE) 式を用いて請求率データを取得しています

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

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

__

よくある問題

問題原因
戻された値が正しくない検索の型 がTRUE、または指定を省略した場合、左端列を英字または数値順に並べ替えておく必要があります。 左端列が並べ替えられていない場合、想定外の値が戻される可能性があります。 左端列を並べ替えるか、または FALSE を使用して、完全一致を検索してください。
セルに #N/A と表示される
  • 検索の型 がTRUEの場合、検索値 の値が範囲 の左端列にある最小値よりも小さいと、#N/Aエラー値を返します。
  • **検索の型 **が FALSE の場合、#N/A エラー値は、完全に一致する値が見つからなかったことを表します。

VLOOKUP で #N/A エラーを解決する方法の詳細については、「 target=”_blank” title=”VLOOKUP 関数の #N/A エラーを修正する方法” rel=”noopener”>VLOOKUP 関数の #N/A エラーを修正する方法」を参照してください。
セルに #REF! と表示される | 列番号 ** が **範囲 に含まれる列の数を超えている場合、#REF! を返します。 が返されます。 VLOOKUP で #REF! エラーを解決する方法の詳細については、「 target=”_blank” title=”エラー値 #REF! を修正する方法” rel=”noopener”>エラー値 #REF! を修正する方法.
セルに #VALUE! と表示される | 範囲 **が 1 未満の場合、#VALUE! エラー値を返します。 VLOOKUP で #VALUE! エラーを解決する方法の詳細については、「 target=”_blank” title=”VLOOKUP 関数の #VALUE! エラーを修正する方法” rel=”noopener”>VLOOKUP 関数の #VALUE! エラーを修正する方法.
セルに #NAME? が表示される | 想定される結果ではなく、#Name? エラー値は通常、数式に引用符が欠落していることを意味します。 ユーザーの名前を検索するには、数式内の名前を引用符で囲む必要があります。 たとえば、=VLOOKUP("Fontana",B2:E7,2,FALSE)に **"Fontana"
という名前を入力します。 詳細については、「 target=”_blank” title=”エラー値 #NAME! を修正する方法” rel=”noopener”>エラー値 #NAME! を修正する方法.
Excel での #SPILL! と表示される | この特定の target=”_blank” title=”#SPILL! エラー” rel=”noopener”>#SPILL! エラー 通常は、数式が参照値の暗黙的な交差部分に依存し、列全体を参照として使用することを意味します。 たとえば、=VLOOKUP(A:A ,A:C,2,FALSE)。 この問題を解決するには、検索参照を @演算子 =VLOOKUP(@A:A ,A:C,2,FALSE) のように固定します。 または、従来の VLOOKUP メソッドを使用して、列全体ではなく 1 つのセルを参照することもできます。=VLOOKUP(A2 ,A:C,2,FALSE)。

__

ベスト プラクティス

操作理由
検索の型には絶対参照を使う __絶対参照を使うと、数式を下方向へコピーした場合に常にまったく同じ検索範囲を参照することができます。 target=”_blank” title=”セルの絶対参照” rel=”noopener”>セルの絶対参照については、こちらを参照してください。
数値や日付を文字列として保存しない。数値または日付値を検索する場合は、** 範囲** の最初の列のデータがテキスト値として格納されていないことを確認してください。 文字列として保存されている場合、誤った値や想定外の値が返されることがあります。
左端列を並べ替える検索の型が****TRUE の場合は VLOOKUP __を使う前に、範囲の左端列を並べ替えます。
ワイルドカード文字を使う検索の型が FALSE で検索値が文字列の場合、検索値で疑問符 (?) またはアスタリスク () をワイルドカード文字として使用できます。** _検索の型_** が FALSE で _検索値_ がテキストの場合、** _検索値_** にワイルドカード文字 — クエスチョンマーク (?) とアスタリスク () — を使用することができます。 疑問符は任意の 1 文字に相当します。 アスタリスクは任意の一連の文字列に相当します。 ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前にチルダ (~) を付けます。 たとえば、=VLOOKUP("Fontan?",B2:E7,2,FALSE) は、Fontana のすべてのインスタンスを検索します。最後の文字は異なる可能性があります。
データに誤字が含まれていないことを確認する。左端の列にある文字列を検索するときは、この列にあるデータの先頭または末尾に余分なスペースがないこと、まっすぐな引用符 (‘ または ") と丸みを帯びた引用符 (‘ または “) が混在しないこと、印刷されない文字が含まれていないことを確認してください。 このいずれかに該当する場合は、予期しない値が返されることがあります。 正確な結果を得るために、 target=”_blank” title=”CLEAN 関数” rel=”noopener”>CLEAN 関数または target=”_blank” title=”TRIM 関数” rel=”noopener”>TRIM 関数を使って、表のセル値の末尾にある余分なスペースを削除してください。

補足説明

Excel Tech Communityで、いつでも専門家に質問できます。また、コミュニティでは、サポートを受けられます。

関連項目

target=”_blank” title=”XLOOKUP 関数” rel=”noopener”>XLOOKUP 関数

target=”_blank” title=”ビデオ: VLOOKUP を使用するタイミングと方法” rel=”noopener”>ビデオ: VLOOKUP を使用するタイミングと方法

target=”_blank” title=”クイック リファレンス カード: VLOOKUP 復習” rel=”noopener”>クイック リファレンス カード: VLOOKUP 復習

target=”_blank” title=”VLOOKUP 関数の #N/A エラーを修正する方法” rel=”noopener”>VLOOKUP 関数の #N/A エラーを修正する方法

target=”_blank” title=”VLOOKUP、INDEX、または MATCH を使って値を検索する” rel=”noopener”>VLOOKUP、INDEX、または MATCH を使って値を検索する

target=”_blank” title=”HLOOKUP 関数” rel=”noopener”>HLOOKUP 関数

上部へスクロール