メインコンテンツへスキップ

Excel初心者および上級者向けの20以上のVLOOKUP使用例

Author: Xiaoyang Last Modified: 2025-08-06

VLOOKUP関数は、Excelで最も人気のある関数の一つです。このチュートリアルでは、基本から高度な例を数十ステップに分けて、ExcelでVLOOKUP関数を使用する方法を紹介します。


VLOOKUPのサンプルファイルをダウンロード

 基本的なVLOOKUPの例   |    高度なVLOOKUPの例   |    Vlookupでセルの書式を保持


VLOOKUP関数の紹介 – 構文と引数

Excelでは、VLOOKUP関数はほとんどのExcelユーザーにとって強力な関数です。この関数を使用すると、データ範囲の最も左の列で値を検索し、指定した列から同じ行の一致する値を返すことができます(次のスクリーンショット参照)。
Syntax and Arguments of vlookup function

VLOOKUP関数の構文:

=VLOOKUP (検索値, テーブル範囲, 列インデックス番号, [範囲検索])

引数:

"Lookup_value"(必須):検索したい値です。値(数値、日付、またはテキスト)またはセル参照が可能です。この値は、table_arrayの範囲の最初の列に存在している必要があります。 

"テーブル範囲"(必須):検索値の列と結果値の列が存在するデータ範囲または表。

"Col_index_num"(必須):返す値を含む列番号。これはテーブル配列の最も左の列から1から始まります。

"範囲検索"(オプション):このVLOOKUP関数が完全一致を返すか、近似一致を返すかを決定する論理値です。

  • "近似一致" – 1 / TRUE / 省略時(デフォルト): 完全一致が見つからない場合、数式は最も近い一致を検索します。つまり、検索値よりも小さい最大値を探します。
  • "完全一致" – 0 / FALSE: これは、検索値と完全に等しい値を検索するために使用されます。完全一致が見つからない場合、エラー値 #N/A が返されます。

関数の説明:

  • Vlookup関数は、左から右に値を検索します。
  • Vlookup関数は、大文字と小文字を区別しない検索を実行します。
  • 検索値に基づいて複数の一致する値がある場合、Vlookup関数を使用すると、最初に一致した値のみが返されます。

基本的なVLOOKUPの例

このセクションでは、よく使用するVlookup関数について説明します。

2.1 完全一致と近似一致のVLOOKUP

 2.1.1 完全一致のVLOOKUPを実行する

通常、VLOOKUP関数を使用して完全一致を検索する場合、最後の引数としてFALSEを使用するだけで済みます。

例えば、特定のID番号に基づいて対応する数学の点数を取得するには、次のように操作してください。
 sample data

以下の数式を空白のセル(ここではG2を選択)にコピーして貼り付け、"Enter"キーを押して結果を得てください。

=VLOOKUP(F2,$A$2:$D$7,3,FALSE)

 apply the vlookup formula

注: 上記の数式には、4つの引数があります。

  • "F2" は、検索したい値 C1005 を含むセルです。
  • "A2:D7" は、検索を実行するテーブル範囲です。
  • 「3」は、一致する値が返される列番号です。(関数がID「C1005」を検出すると、テーブル配列の3列目に移動し、ID「C1005」と同じ行の値を返します。)
  • "FALSE" は完全一致を指します。

VLOOKUP関数の仕組みは?

まず、表の最も左の列でID - C1005を探します。上から下に移動し、セルA6で値を見つけます。
  It goes from top to bottom and finds the value in specific cell

値を見つけるとすぐに、3列目(右側)に移動し、その中の値を抽出します。
it goes to the right in the third column and extracts the value in it

結果は、以下のスクリーンショットに示すようになります。
get the result

注: 検索値が最も左の列に見つからない場合、#N/A エラーが返されます。
🤖 Kutools AI アシスタント: 次の要素に基づいてデータ分析を革新: インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools 拡張機能の呼び出し
人気の機能: 重複を見つける、ハイライトする、または特定する   |  空白行を削除   |  データを失わずに列やセルを結合   |   数式なしで丸める ...
スーパーLOOKUP: 複数条件VLookup  |   複数値VLookup  |   複数シートの検索   |   ファジーマッチ ...
高度なドロップダウンリスト: ドロップダウンリストを迅速に作成   |  依存ドロップダウンリスト   |  複数選択ドロップダウンリスト ...
列マネージャー: 特定の数の列を追加  |  列を移動   |  非表示の列を再表示  |  範囲と列を比較 ...
注目機能: グリッドフォーカス   |  デザインビュー   |   強化された数式バー   |  ワークブックおよびシートマネージャー  |  オートテキスト ライブラリ   |  日付ピッカー  |  データの統合   |  セルの暗号化/復号化    リストによるメール送信   |  スーパーフィルター   |   特殊フィルタ (太字/斜体などによる) ...
上位15のツールセット12 のテキストツール (テキストの追加, 特定の文字を削除, ...)   |   50以上 のチャート タイプ (ガントチャート, ...)   |   40以上の実用的な 数式 (誕生日に基づいて年齢を計算する, ...)   |   19 の挿入ツール (QRコードの挿入, パスからの画像挿入, ...)   |   12 の変換ツール (単語に変換する, 通貨変換, ...)   |   7つ の結合および分割ツール (高度な行のマージ, セルの分割, ...)   |   他にも多数...

Kutools for Excelは300以上の機能を誇り必要なものがワンクリックで手に入ります...

 
 2.1.2 近似一致によるVLOOKUPの実行

近似一致は、データ範囲間の値を検索する際に役立ちます。完全一致が見つからない場合、近似VLOOKUPは検索値よりも小さい最大値を返します。

例えば、次のデータ範囲があり、指定された注文が「Orders」列にない場合、列Bの最も近い「Discount」をどのように取得すればよいでしょうか?
Do an approximate match VLOOKUP

ステップ1: VLOOKUP関数を適用し、他のセルにコピーします。

結果を表示したいセルに次の数式をコピーして貼り付け、塗りつぶしハンドルを下にドラッグして他のセルにもこの数式を適用します。

=VLOOKUP(D2,$A$2:$B$9,2,TRUE)

結果:

これで、指定された値に基づく近似一致が得られます。スクリーンショットをご覧ください:
Apply the VLOOKUP formula and fill it to other cells

注記:

  • 上記の数式において:
    • "D2" は、関連情報を返したい値です。
    • "A2:B9" はデータ範囲です。
    • "2" は、一致する値が返される列番号を示します。
    • 「TRUE」は近似一致を指します。
  • 完全一致が見つからない場合、近似一致は指定された検索値よりも小さい最大値を返します。
  • VLOOKUP関数を使用して近似一致の値を取得するには、データ範囲の最も左の列を昇順に並べ替える必要があります。そうしないと、間違った結果が返されます。

2.2 Excelで大文字と小文字を区別するVLOOKUPを実行する

デフォルトでは、VLOOKUP関数は大文字と小文字を区別しない検索を実行します。これは、小文字と大文字の文字を同じものとして扱うことを意味します。場合によっては、Excelで大文字と小文字を区別する検索を行う必要があるかもしれません。通常のVLOOKUP関数ではそれが解決できないことがあります。このような場合、INDEX関数とMATCH関数をEXACT関数と一緒に使用するか、LOOKUP関数とEXACT関数を使用することができます。

例えば、次のようなデータ範囲があり、ID列には大文字や小文字のテキスト文字列が含まれています。ここで、指定されたID番号に対応する数学のスコアを返したいと思います。
Do a case sensitive VLOOKUP

ステップ1:任意の数式を適用し、他のセルにフィルする

結果を取得したい空白のセルに、以下の数式のいずれかをコピーして貼り付けてください。次に、数式が入力されたセルを選択し、フィルハンドルを下にドラッグして、この数式を適用したいセル範囲に適用します。

数式 1: 数式を貼り付けた後、「Ctrl」+「Shift」+「Enter」キーを押してください。

=INDEX($C$2:$C$10,MATCH(TRUE,EXACT(F2,$A$2:$A$10),0))

数式 2: 数式を貼り付けた後、「Enter」キーを押してください。

=LOOKUP(2,1/EXACT(F2,$A$2:$A$10),$C$2:$C$10)

結果:

そして、必要な正しい結果が得られます。 スクリーンショットをご覧ください:
Apply any one formula and fill it to other cells

注記:

  • 上記の数式において:
    • "A2:A10" は、検索したい特定の値が含まれている列です。
    • "F2" は検索値です。
    • "C2:C10" は結果が返される列です。
  • 複数の一致が見つかった場合、この数式は常に最後の一致を返します。

2.3 Excelで右から左へのVLOOKUP値を検索

VLOOKUP関数は、常にデータ範囲の最も左の列で値を検索し、右側の列から対応する値を返します。以下のようなスクリーンショットに示されるように、右側の列で特定の値を検索し、左側の列にあるその対応する値を返す逆方向のVLOOKUPを実行したい場合があります。

このタスクに関する詳細をステップごとに確認するにはクリックしてください…

VLOOKUP values from right to left


2.4 Excelで2番目、n番目、または最後の一致する値をVLOOKUPで検索

通常、Vlookup関数を使用して複数の一致する値が見つかった場合、最初に一致したレコードのみが返されます。このセクションでは、データ範囲内の2番目、n番目、または最後の一致する値を取得する方法について説明します。

 2.4.1 VLOOKUPで2番目またはn番目の一致する値を返す

列Aに名前のリストがあり、列Bに購入したトレーニングコースがあるとします。ここで、特定の顧客が購入した2番目またはn番目のトレーニングコースを見つけたいと考えています。スクリーンショットをご覧ください:
VLOOKUP and return the second or nth matching value

ここで、VLOOKUP関数はこのタスクを直接解決できない場合があります。しかし、代わりにINDEX関数を使用することができます。

ステップ1:数式を他のセルに適用して埋める

例えば、指定された条件に基づいて2番目の一致する値を取得するには、次の数式を空白のセルに適用し、「Ctrl」+「Shift」+「Enter」キーを同時に押して最初の結果を得てください。その後、数式が入力されたセルを選択し、フィルハンドルを下にドラッグして、この数式を入力したいセルまでコピーします。

=INDEX($B$2:$B$14,SMALL(IF(E2=$A$2:$A$14,ROW($A$2:$A$14)-ROW($A$2)+1),2))

結果:

これで、指定された名前に基づくすべての2番目に一致する値が一度に表示されました。
Apply and fill the formula to other cells

注: 上記の数式では:

  • "A2:A14" は、検索対象となるすべての値を含む範囲です。
  • "B2:B14" は、返したい一致する値の範囲です。
  • "E2" は検索値です。
  • "2" は取得したい2番目の一致値を示しており、3番目の一致値を返すには、それを 3 に変更するだけでよいです。
 2.4.2 VLOOKUPと最後に一致する値を返す

以下スクリーンショットに示すように、最後に一致する値をvlookupして返したい場合、このVLOOKUP And Return The Last Matching Valueのチュートリアルが、詳細に最後の一致する値を取得するのに役立つかもしれません。

VLOOKUP and return the last matching value


2.5 2つの指定された値または日付の間でVLOOKUPを使用して一致する値を検索

時々、2つの値や日付の間で値を検索し、下のスクリーンショットに示すように対応する結果を返したい場合があります。このような場合、VLOOKUP関数ではなく、ソートされた表でLOOKUP関数を使用できます。
VLOOKUP matching values between two values

 2.5.1 与えられた2つの値または日付の間でVLOOKUPを使用して値を一致させる数式

ステップ1: データを整理し、次の数式を適用します

元の表はソートされたデータ範囲である必要があります。その後、次の数式を空白のセルにコピーするか入力します。そして、フィルハンドルをドラッグして、この数式を必要な他のセルに適用します。

=LOOKUP(2,1/($A$2:$A$6<=E2)/($B$2:$B$6>=E2),$C$2:$C$6)

結果:

そして今、指定された値に基づいてすべての一致するレコードが取得されます。スクリーンショットをご覧ください:
Arrange the data and apply a formula

注記:

  • 上記の数式において:
    • "A2:A6" は小さい値の範囲です。
    • "B2:B6" は大きい数字の範囲です。
    • "E2" は、対応する値を取得したい検索値です。
    • "C2:C6" は、対応する値を返したい列です。
  • この数式は、次のスクリーンショットに示すように、2つの日付間で一致する値を抽出するためにも使用できます。
    this formula also can extract matched values between two dates
 2.5.2 便利な機能を使用して、指定された2つの値または日付の間でVLOOKUPが一致する値を検索

上記の数式を覚えて理解するのが難しいと感じる場合、ここで簡単なツールをご紹介します。「Kutools for Excel」には「2つの値の間のデータを検索」という機能があり、これを使用すれば、特定の値や日付に基づいて、2つの値または日付の間に対応する項目を簡単に返すことができます。

  1. 「Kutools」>「スーパーLOOKUP」>「2つの値の間のデータを検索」をクリックして、この機能を有効にします。
  2. 次に、データに基づいてダイアログボックスから操作を指定します。
注: この機能を適用するには、30日間の無料試用版であるKutools for Excelをダウンロードしてください。

VLOOKUP matching values between two given values or dates by kutools

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

2.6 VLOOKUP関数で部分一致にワイルドカードを使用する

Excelでは、ワイルドカードをVLOOKUP関数内で使用できます。これにより、検索値に対して部分一致を行うことが可能です。例えば、検索値の一部に基づいて、VLOOKUPを使用してテーブルから一致する値を返すことができます。

以下のスクリーンショットに示すように、データの範囲があるとします。ここで、名(フルネームではなく)に基づいてスコアを抽出したいと思います。このタスクをExcelでどのように解決すればよいでしょうか?
VLOOKUP partial matches

ステップ1:数式を適用し、他のセルにフィルする

次の数式を空白のセルにコピーまたは入力し、塗りつぶしハンドルをドラッグして、必要な他のセルにこの数式を適用してください。

=VLOOKUP(E2&"*", $A$2:$C$11, 3, FALSE)

結果:

そして、すべての一致するスコアは以下のスクリーンショットに示されているように返されました。
Apply and fill the formula to other cells

注: 上記の数式では:

  • "E2&”*”" は部分一致の条件です。これは、セル E2 の値で始まる任意の値を検索することを意味します。(ワイルドカード “*” は任意の1文字または複数の文字を示します)
  • "A2:C11" は、一致する値を検索したいデータの範囲です。
  • 「3」は、データ範囲の3番目の列から一致する値を返すことを意味します。
  • 「False」は完全一致を示します。(ワイルドカードを使用する場合、VLOOKUP関数で完全一致モードを有効にするには、関数の最後の引数をFALSEまたは0に設定する必要があります。)
ヒント:
  • 特定の値で終わる一致する値を検索して返すには、値の前にワイルドカード "*" を置く必要があります。この数式を適用してください:
  • =VLOOKUP("*"&E2, $A$2:$C$11, 3, FALSE)

    To return the matching values ending with a specific value, put the wildcard in front of the value
  • 指定されたテキストが文字列の先頭、末尾、または途中にある場合でも、部分的な文字列に基づいて一致する値を検索して返すには、セル参照またはテキストを前後にアスタリスク(*)2つで囲むだけで済みます。この数式を使用してください。
  • =VLOOKUP("*"&D2&"*", $A$2:$B$11, 2, FALSE)

    to return the matched value based on part of the text string, enclose the cell reference with two asterisks on both sides

2.7 別のワークシートからVLOOKUPで値を検索

通常、複数のワークシートを扱う必要がある場合があります。VLOOKUP関数は、1つのワークシート上と同じように、別のシートからデータを検索するために使用できます。

例えば、以下のスクリーンショットに示すように2つのワークシートがあり、指定したワークシートから対応するデータを検索して返したい場合、次の手順で操作してください。
VLOOKUP from another worksheet

ステップ1:数式を適用し、他のセルにフィルする

一致する項目を取得したい空白のセルに、以下の数式を入力またはコピーしてください。その後、この数式を適用したいセルまでフィルハンドルを下にドラッグします。

=VLOOKUP(A2,'Data sheet'!$A$2:$C$15,3,0)

結果:

必要な結果が得られます。スクリーンショットをご覧ください:

data in one sheet arrow right get the corresponding results in another sheet

注: 上記の数式では:

  • "A2" は検索値を表します;
  • 'データシート'!A2:C15" は、Data sheet という名前のワークシートの範囲 A2:C15 から値を検索することを示します。(シート名にスペースや句読点が含まれる場合は、シート名をシングルクォーテーションで囲む必要があります。それ以外の場合は、次のようにシート名を直接使用できます:
    =VLOOKUP(A2,Datasheet!$A$2:$C$15,3,0) )。
  • "3" は、返したい一致するデータが含まれている列番号です。
  • "0"は完全一致を意味します。

2.8 別のワークブックからVLOOKUPで値を検索

このセクションでは、VLOOKUP関数を使用して別のワークブックから一致する値を検索および返す方法について説明します。

例えば、2つのワークブックがあるとします。最初のワークブックには製品のリストとそれぞれのコストが含まれています。2番目のワークブックでは、以下のように各製品項目に対応するコストを抽出したいとします(下のスクリーンショット参照)。
VLOOKUP from another workbook

ステップ1:数式を適用する

使用したい両方のワークブックを開き、結果を表示したい第二のワークブックのセルに次の数式を適用します。その後、この数式を必要な他のセルにドラッグしてコピーします。

=VLOOKUP(B2,'[Product list.xlsx]Sheet1'!$A$2:$B$6,2,0)

結果:

Apply and fill the formula

注記:

  • 上記の数式において:
    • "B2" は検索値を表します。
    • 「'[Product list.xlsx]Sheet1'!A2:B6」は、ワークブック「Product list」内の「Sheet1」という名前のシートの範囲A2:B6から検索することを示します。(ワークブックへの参照は角括弧で囲まれ、ワークブック全体とシートはシングルクォーテーションで囲まれています。)
    • "2" は、返したい一致データが含まれている列番号です。
    • "0"は完全一致を返すことを示します。
  • 参照先のワークブックが閉じられている場合、次のスクリーンショットに示すように、参照先のワークブックのフルファイルパスが数式に表示されます。
    If the lookup workbook is closed, the full file path for the lookup workbook is shown in the formula

2.9 0または#N/Aエラーの代わりに空白または特定のテキストを返す

通常、VLOOKUP関数を使用して対応する値を返す場合、一致するセルが空白の場合、0が返されます。また、一致する値が見つからない場合、以下のスクリーンショットに示すように、エラー値 #N/A が表示されます。空白のセルや特定の値を0や#N/Aの代わりに表示したい場合、この「VLOOKUPで0やN/Aの代わりに空白または特定の値を返す」チュートリアルが役立つかもしれません。

Return blank or specific text instead of 0 or #N/A error


高度なVLOOKUPの例

3.1 双方向検索(行と列でのVLOOKUP)

場合によっては、2次元検索を実行する必要があるかもしれません。これは、行と列の両方で値を同時に検索することを意味します。例えば、以下のようなデータ範囲があり、特定の四半期における特定の製品の値を取得したい場合が考えられます。このセクションでは、Excelでこのタスクに対処するための数式を紹介します。
VLOOKUP in row and column

Excelでは、VLOOKUP関数とMATCH関数を組み合わせて使用することで、双方向検索を行うことができます。

次の数式を空白のセルに適用し、"Enter"キーを押して結果を得てください。

=VLOOKUP(G2, $A$2:$E$7, MATCH(H1, $A$2:$E$2, 0), FALSE)

use a combination of VLOOKUP and MATCH functions to get the result

注: 上記の数式では:

  • "G2" は、対応する値を取得したい列の中の検索値です。
  • "A2:E7" は、検索対象のデータテーブルです。
  • "H1" は、対応する値を取得したい行内の検索値です。
  • "A2:E2" は列見出しのセルです。
  • "FALSE" は完全一致を取得することを示します。

3.2 複数条件に基づくVLOOKUPの一致値

1つの条件に基づいて一致する値を検索するのは簡単ですが、2つ以上の条件がある場合はどうすればよいでしょうか?

 3.2.1 複数条件に基づくVLOOKUPの一致値(数式を使用)

この場合、ExcelのLOOKUP関数やMATCHおよびINDEX関数を使用すると、この作業を迅速かつ簡単に解決できます。

例えば、以下のデータテーブルがあり、特定の製品とサイズに基づいて一致する価格を返したい場合、次の数式が役立つかもしれません。
VLOOKUP based on two or more criteria

ステップ1:以下の数式のいずれかを適用します

数式1:次の数式を入力し、「Enter」を押します。

=LOOKUP(2,1/($A$2:$A$12=G1)/($B$2:$B$12=G2),($D$2:$D$12))

数式 2: 次の数式を入力し、「Ctrl」+「Shift」+「Enter」を押します。

=INDEX($D$2:$D$12,MATCH(1,($A$2:$A$12=G1)*($B$2:$B$12=G2),0))

結果:

Apply any one formula to get the result

注記:

  • 上記の数式において:
    • "A2:A12=G1" は、範囲 A2:A12 で G1 の条件を検索することを意味します。
    • "B2:B12=G2" は、範囲 B2:B12 で G2 の条件を検索することを意味します。
    • "D2:D12"は、対応する値を返したい範囲です。
  • 2つ以上の条件がある場合は、他の条件を数式に追加するだけでよいです。例えば:
    =LOOKUP(2,1/($A$2:$A$12=G1)/($B$2:$B$12=G2)/($C$2:$C$12=G3),($D$2:$D$12))
    =INDEX($D$2:$D$12,MATCH(1,($A$2:$A$12=G1)*($B$2:$B$12=G2)*($C$2:$C$12=G3),0))
  • join the other criteria into the formula if there are more than two criteria
 3.2.2 Kutools for Excelを使用した2つ以上の条件に基づくVLOOKUPの一致値

上記の複雑な数式を繰り返し適用する必要がある場合、それを覚えるのは難しいことがあり、作業効率が低下する可能性があります。しかし、「Kutools for Excel」には "Multi-condition Lookup" 機能があり、いくつかのクリックだけで1つまたは複数の条件に基づいて対応する結果を返すことができます。

  1. 「Kutools」>「スーパーLOOKUP」>「複数条件検索」をクリックして、この機能を有効化します。
  2. 次に、データに基づいてダイアログボックスから操作を指定します。
注: この機能を適用するには、30日間の無料試用版であるKutools for Excelをダウンロードしてください。

VLOOKUP based on two or more criteria by kutools

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

3.3 複数の基準で複数の値を返すVLOOKUP

Excelでは、VLOOKUP関数は値を検索し、複数の対応する値が見つかった場合でも最初に一致した値しか返しません。時には、行、列、または単一のセル内のすべての対応する値を返したい場合があります。このセクションでは、ワークブック内で1つまたは複数の条件に基づいて複数の一致する値を返す方法について説明します。

 3.3.1 1つまたは複数の条件に基づいてすべての一致する値を水平方向にVLOOKUP

A1:C14の範囲に国、都市、名前を含むデータ表があると仮定します。そして、以下スクリーンショットに示すように、「US」からのすべての名前を水平方向に返したいとします。このタスクを解決するには、ステップバイステップで結果を得るためには こちらをクリックしてください

 VLOOKUP all matching values based on one or more conditions horizontally

 3.3.2 1つまたは複数の条件に基づいてすべての一致する値を垂直方向にVLOOKUP

特定の条件に基づいてVlookupを行い、下のスクリーンショットに示すようにすべての一致する値を垂直方向に戻す必要がある場合は、詳細な解決策はこちらをクリックしてください

 VLOOKUP all matching values based on one or more conditions vertically

 3.3.3 1つまたは複数の条件に基づいてすべての一致する値を単一のセルにVLOOKUP

複数の一致する値を指定した区切り文字で1つのセルに返すVlookupを行いたい場合、TEXTJOINの新しい関数を使用すると、この作業を迅速かつ簡単に解決できます

 VLOOKUP all matching values based on one or more conditions into single cell

注記:

  • TEXTJOIN関数は、Excel 2019、Excel 365およびそれ以降のバージョンでのみ利用可能です。
  • Excel 2016およびそれ以前のバージョンを使用している場合は、次の記事のユーザー定義関数を使用してください:
  • Excelで1つのセルに複数の値を返すVlookup

3.4 マッチしたセルの行全体を返すVLOOKUP

このセクションでは、VLOOKUP関数を使用して一致する値の行全体を取得する方法について説明します。

ステップ1:次の数式を適用します

結果を出力したい空白のセルに以下の数式をコピーまたは入力し、「Enter」キーを押して最初の値を取得してください。その後、数式セルを右方向にドラッグして、行全体のデータが表示されるまで続けます。

=VLOOKUP($F$2,$A$1:$D$12,COLUMN(A1),FALSE)

結果:

これで、行全体のデータが返されるのがわかります。スクリーンショットをご覧ください:
VLOOKUP to return entire row of a matched cell by a formula

注: 上記の数式では:

  • "F2" は、基づいて行全体を返すために使用する検索値です。
  • "A1:D12"は、検索値を検索するデータ範囲です。
  • "A1" は、データ範囲内の最初の列番号を示します。
  • "FALSE" は正確な検索を示します。

ヒント:

  • 一致する値に基づいて複数の行が見つかった場合、すべての対応する行を返すには、以下の数式を適用してください。その後、「Ctrl」+「Shift」+「Enter」キーを同時に押して最初の結果を得ます。次に、フィルハンドルを右にドラッグします。そして、フィルハンドルを下にドラッグし続けて、すべての一致する行を取得します。下のデモをご覧ください:
    =IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(SEARCH($F$2,$A$2:$A$12)),ROW($A$2:$A$12),""),ROW()-1)),"")

3.5 ExcelでのネストされたVLOOKUP

時々、複数のテーブル間で相互に関連付けられた値を検索する必要がある場合があります。このような場合、最終的な値を得るために複数のVLOOKUP関数をネストすることができます。

例えば、2つの独立した表を含むワークシートがあるとします。最初の表には、すべての製品名とそれに対応する営業担当者のリストが記載されています。2番目の表には、各営業担当者の総売上が記載されています。ここで、次のスクリーンショットに示すように、各製品の売上を見つけたい場合、VLOOKUP関数をネストすることでこのタスクを実行できます。
Nested VLOOKUP

ネストされたVLOOKUP関数の一般的な数式は次のとおりです:

=VLOOKUP(VLOOKUP(検索値, テーブル範囲1, 列インデックス番号1, 0), テーブル範囲2, 列インデックス番号2, 0)

注記:

  • "lookup_value" は、検索する値です。
  • "Table_array1"、"Table_array2" は、検索値と返す値が存在するテーブルです。
  • "col_index_num1" は、最初のテーブル内で中間共通データを見つけるための列番号を示します。
  • "col_index_num2" は、一致する値を返したい第二のテーブル内の列番号を示します。
  • "0" は完全一致に使用されます。

ステップ1: 次の数式を適用して入力します

次の数式を空白のセルに適用し、その後、この数式を適用したいセルまでフィルハンドルを下にドラッグしてください。

=VLOOKUP(VLOOKUP(G3,$A$3:$B$7,2,0),$D$3:$E$7,2,0)

結果:

これで、次のスクリーンショットに示すような結果が得られます。
Apply and fill a formula

注: 上記の数式では:

  • "G3" には、探している値が含まれています。
  • "A3:B7", "D3:E7" は、検索値と返す値が存在するテーブル範囲です。
  • "2" は、一致する値を返す範囲内の列番号です。
  • "0" は VLOOKUP の完全一致を示します。

3.6 別の列のリストデータに基づいて値が存在するかどうかを確認する

VLOOKUP関数を使用すると、別の列のデータリストに基づいて値が存在するかどうかを確認することもできます。例えば、列Cの名前を検索し、以下のスクリーンショットのように、その名前が列Aに見つかった場合には「はい」、見つからなかった場合には「いいえ」を返すことができます。
Check if value exists based on a list data in another column

ステップ1:次の数式を適用します

次の数式を空白のセルに適用し、塗りつぶしハンドルを下にドラッグして、この数式を入力したいセルまで適用してください。

=IF(ISNA(VLOOKUP(C2,$A$2:$A$10,1,FALSE)), "No", "Yes")

結果:

そして、必要な結果が得られます。スクリーンショットをご覧ください:
Apply and fill a formula

注: 上記の数式では:

  • "C2" は確認したい検索値です。
  • "A2:A10" は、検索値が見つかるかどうかを確認するための範囲のリストです。
  • "FALSE" は完全一致を取得することを示します。

3.7 VLOOKUPと一致するすべての値を列または行で合計

数値データを扱う際、表から一致する値を抽出し、複数の列や行の数字を合計する必要が出てくる場合があります。このセクションでは、そのようなタスクを実行するのに役立ついくつかの数式を紹介します。

 3.7.1 VLOOKUPを使用して行または複数行のすべての一致する値を合計する

以下のスクリーンショットに示すように、数か月分の売上のある商品リストがあるとします。ここで、指定された商品に基づいてすべての月の注文を合計する必要があります。
VLOOKUP and sum all matched values in a row

ステップ1:次の数式を適用します

次の数式を空白のセルにコピーまたは入力し、「Ctrl」+「Shift」+「Enter」キーを同時に押して最初の結果を得てください。その後、フィルハンドルを下にドラッグして、この数式を必要な他のセルにコピーします。

=SUM(VLOOKUP(H2, $A$2:$F$9, {2,3,4,5,6}, FALSE))

Apply and fill a formula

結果:

最初に一致する値の行にあるすべての値が合計されました。スクリーンショットをご覧ください:
all values in a row of the first matching value are summed together

注: 上記の数式では:

  • "H2" は、探している値が含まれているセルです。
  • "A2:F9" は、検索値と一致する値を含むデータ範囲(列ヘッダーを除く)です。
  • 「{2,3,4,5,6}」は、範囲の合計を計算するために使用される列番号です。
  • "FALSE" は完全一致を示します。

ヒント: 複数行のすべての一致する値を合計したい場合は、次の数式を使用してください。

  • =SUMPRODUCT(($A$2:$A$9=H2)*$B$2:$F$9)
  • apply a formula to sum all matches in multiple rows
 3.7.2 列または複数列のVLOOKUPと一致するすべての値の合計

特定の月の合計値を、下のスクリーンショットに示すように計算したい場合、通常のVLOOKUP関数では対応できないかもしれません。ここでは、SUM、INDEX、MATCH関数を組み合わせて使用し、数式を作成する必要があります。
VLOOKUP and sum all matched values in a column

ステップ1:次の数式を適用します

以下の数式を空白のセルに適用し、塗りつぶしハンドルを下にドラッグしてこの数式を他のセルにコピーします。

=SUM(INDEX($B$2:$F$9,0,MATCH(H2,$B$1:$F$1,0)))

結果:

これで、列内の特定の月に基づく最初の一致する値が合計されました。スクリーンショットをご覧ください:
Apply and fill a formula

注: 上記の数式では:

  • "H2" は、探している値が含まれているセルです。
  • "B1:F1" は、検索値を含む列の見出しです。
  • "B2:F9" は、合計したい数値を含むデータ範囲です。

ヒント: 複数の列にあるすべての一致する値をVLOOKUPして合計するには、次の数式を使用する必要があります:

  • =SUMPRODUCT($B$2:$F$9*(($B$1:$F$1)=H2))
  • use a formula to sum all matched values in multiple columns
 3.7.3 Kutools for Excelを使用して最初に一致する値またはすべての一致する値をVLOOKUPで検索して合計する

上記の数式が覚えにくいと感じる場合もあるかもしれません。そのような場合には、強力な機能である「Kutools for Excel」の「検索と合計」をお勧めします。この機能を使用すると、行または列で最初に一致する値やすべての一致する値を、可能な限り簡単にVlookupして合計することができます。

  1. 「Kutools」>「スーパーLOOKUP」>「検索と合計」をクリックして、この機能を有効化します。
  2. 次に、必要に応じてダイアログボックスから操作を指定します。
注: この機能を適用するには、30日間の無料試用版でKutools for Excelをダウンロードしてください。
Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...
 3.7.4 VLOOKUPと一致するすべての値を列と行で合計

列と行の両方を一致させる必要がある場合に値を合計したい場合、例えば、以下のスクリーンショットに示すように、製品「セーター」の月「3月」における合計値を求めたい場合があります。
VLOOKUP and sum all matched values both in rows and columns

ここで、SUMPRODCT関数を使用してこのタスクを実行できます。

次の数式をセルに適用し、「Enter」キーを押して結果を得てください。スクリーンショットをご覧ください:

=SUMPRODUCT(($B$2:$F$9)*($B$1:$F$1=I2)*($A$2:$A$9=H2))

use the SUMPRODCT function to get the result

注: 上記の数式では:

  • "B2:F9" は、合計したい数値を含むデータ範囲です。
  • "B1:F1" は、合計の基準となる検索値を含む列ヘッダーです。
  • "I2" は、検索対象の列ヘッダー内の検索値です。
  • "A2:A9" は、基準に基づいて合計したい検索値を含む行ヘッダーです。
  • 「H2」は、行見出し内で検索している値です。

3.8 キーカラムに基づいて2つのテーブルを統合するVLOOKUP

日々の業務において、データを分析する際、1つまたは複数のキーカラムに基づいてすべての必要な情報を1つのテーブルにまとめる必要がある場合があります。このタスクを実行するために、VLOOKUP関数の代わりにINDEX関数とMATCH関数を使用することができます。

 3.8.1 一つのキー列に基づいて2つのテーブルをマージするVLOOKUP

例えば、2つのテーブルがあり、1つ目のテーブルには製品と名前のデータが含まれ、2つ目のテーブルには製品と注文のデータが含まれているとします。ここで、共通の製品列を基にこれらの2つのテーブルを1つのテーブルに結合したいとします。
VLOOKUP to merge two tables based on one key column

ステップ1: 次の数式を適用します

次の数式を空白のセルに適用してください。その後、この数式を適用したいセルまでフィルハンドルを下にドラッグします。

=INDEX($F$2:$F$8, MATCH($A2, $E$2:$E$8, 0))

結果:

これで、キー列のデータに基づいて順序列が最初の表に結合された統合された表が得られます。
Apply and fill a formula to get the result

注: 上記の数式では:

  • "A2" は、あなたが探している検索値です。
  • "F2:F8" は、一致する値を返したいデータの範囲です。
  • "E2:E8" は、検索値を含む検索範囲です。
 3.8.2 複数のキー列に基づいて2つのテーブルを統合するVLOOKUP

結合したい2つのテーブルに複数のキー列がある場合、これらの共通列に基づいてテーブルを統合するには、以下の手順に従ってください。
VLOOKUP to merge two tables based on multiple key columns

一般的な数式は次のとおりです:

=INDEX(参照表, MATCH(1, (検索値1=検索範囲1) * (検索値2=検索範囲2), 0), 返す列番号)

注記:

  • "lookup_table" は、検索データと一致するレコードを含むデータ範囲です。
  • "lookup_value1" は、検索する最初の条件です。
  • "lookup_range1" は、最初の条件を含むデータリストです。
  • "lookup_value2" は、検索する2番目の条件です。
  • "lookup_range2" は、2番目の基準を含むデータリストです。
  • "return_column_number" は、一致する値を返したい lookup_table 内の列番号を示します。

ステップ1:次の数式を適用します

結果を表示したい空白セルに以下の数式を入力し、「Ctrl」+「Shift」+「Enter」キーを同時に押して、最初の一致する値を取得してください。スクリーンショットをご覧ください:

=INDEX($E$2:$G$9, MATCH(1, ($A2=$E$2:$E$9) * ($B2=$F$2:$F$9), 0), 3)

Apply a formula

ステップ 2: 数式を他のセルに埋め込む

次に、最初の数式セルを選択し、フィルハンドルをドラッグして、必要に応じてこの数式を他のセルにコピーします。
Fill the formula to other cells

ヒント: Excel 2016以降のバージョンでは、「Power Query」機能を使用して、キー列に基づいて2つ以上のテーブルを1つに統合することもできます。詳細な手順については、こちらをクリックしてください。

3.9 複数のワークシート間でVLOOKUPを使って値を照合

Excelで複数のワークシートにまたがってVLOOKUPを実行する必要はありますか?例えば、データ範囲を持つ3つのワークシートがあり、これらのシートから基準に基づいて特定の値を取得したい場合、「複数のワークシート間でのVLOOKUP」のステップバイステップのチュートリアルに従うことで、このタスクを実行できます。

VLOOKUP across multiple worksheets


VLOOKUPで一致した値のセル書式を保持

一致する値を検索する際、フォントの色、背景色、データ形式などの元のセル書式は保持されません。セルやデータの書式を保持するため、このセクションではその対処方法に関するいくつかのテクニックを紹介します。

4.1 VLOOKUPで値を照合し、セルの色やフォントの書式を保持

周知の通り、通常のVLOOKUP関数は別のデータ範囲から一致する値を取得することしかできません。しかし、塗りつぶしの色、フォントの色、フォントスタイルなどのセル書式と共に該当する値を取得したい場合もあるかもしれません。このセクションでは、Excelでソースの書式を保持しつつ一致する値を取得する方法について説明します。
VLOOKUP and keep cell formatting

次の手順に従って、対応する値を検索し、セルの書式設定と共に返してください:

ステップ1: コード1をシートコードモジュールにコピーします

  1. VLOOKUPしたいデータが含まれているワークシートで、シートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。スクリーンショットをご覧ください:
     right click the sheet tab and select View Code
  2. 開かれた「Microsoft Visual Basic for Applications」ウィンドウで、以下のVBAコードをコードウィンドウにコピーしてください。
  3. VBAコード1: VLOOKUPを使用して検索値と共にセルの書式を取得
  4. Sub Worksheet_Change(ByVal Target As Range)
    'Updateby Extendoffice
        Dim I As Long
        Dim xKeys As Long
        Dim xDicStr As String
        On Error Resume Next
        Application.ScreenUpdating = False
        xKeys = UBound(xDic.Keys)
        If xKeys >= 0 Then
            For I = 0 To UBound(xDic.Keys)
                xDicStr = xDic.Items(I)
                If xDicStr <> "" Then
                    Range(xDic.Keys(I)).Interior.Color = _
                    Range(xDic.Items(I)).Interior.Color
                    Range(xDic.Keys(I)).Font.FontStyle = _
                    Range(xDic.Items(I)).Font.FontStyle
                    Range(xDic.Keys(I)).Font.Size = _
                    Range(xDic.Items(I)).Font.Size
                    Range(xDic.Keys(I)).Font.Color = _
                    Range(xDic.Items(I)).Font.Color
                    Range(xDic.Keys(I)).Font.Name = _
                    Range(xDic.Items(I)).Font.Name
                    Range(xDic.Keys(I)).Font.Underline = _
                    Range(xDic.Items(I)).Font.Underline
                Else
                    Range(xDic.Keys(I)).Interior.Color = xlNone
                End If
            Next
            Set xDic = Nothing
        End If
        Application.ScreenUpdating = True
    End Sub
    
  5. copy and paste the code1 into the module

ステップ 2: コード 2 をモジュールウィンドウにコピーします

  1. 「Microsoft Visual Basic for Applications」ウィンドウで、「挿入」>「モジュール」をクリックし、以下のVBAコード2を「モジュール」ウィンドウにコピーしてください。
  2. VBAコード2: 検索値と共にセルの書式を取得するVLOOKUP
  3. Public xDic As New Dictionary
    Function LookupKeepFormat (ByRef FndValue, ByRef LookupRng As Range, ByRef xCol As Long)
        Dim xFindCell As Range
        On Error Resume Next
        Set xFindCell = LookupRng.Find(FndValue, , xlValues, xlWhole)
        If xFindCell Is Nothing Then
            LookupKeepFormat = ""
            xDic.Add Application.Caller.Address, ""
        Else
            LookupKeepFormat = xFindCell.Offset(0, xCol - 1).Value
            xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address
        End If
    End Function
    
  4. copy and paste the code2 into the module

ステップ 3: VBAproject のオプションを選択します

  1. 上記のコードを挿入した後、「Microsoft Visual Basic for Applications」ウィンドウで「ツール」>「参照設定」をクリックします。その後、「参照設定 – VBAProject」ダイアログボックスで「Microsoft Scripting Runtime」チェックボックスをオンにします。スクリーンショットをご覧ください:
    click Tools > References arrow right check the Microsoft Scripting Runtime checkbox in the dialog box
  2. 次に、「OK」をクリックしてダイアログボックスを閉じ、コードウィンドウを保存して閉じます。

ステップ4:結果を取得するための数式を入力します

  1. これで、ワークシートに戻り、次の数式を適用します。その後、塗りつぶしハンドルを下にドラッグして、すべての結果とその書式を取得します。スクリーンショットをご覧ください:
    =LookupKeepFormat(E2,$A$1:$C$10,3)

    type a formula for getting the result

注: 上記の数式では:

  • "E2" は検索する値です。
  • "A1:C10" は表の範囲です。
  • 「3」は、一致する値を取得したいテーブルの列番号です。

4.2 VLOOKUPで返された値の日付形式を保持する

VLOOKUP関数を使用して日付形式の値を検索して返す場合、返される結果が数字として表示されることがあります。返される結果で日付形式を維持するには、VLOOKUP関数をTEXT関数で囲む必要があります。
vlookup keep date format

ステップ1:次の数式を適用します

次の数式を空白のセルに適用してください。その後、塗りつぶしハンドルをドラッグしてこの数式を他のセルにコピーします。

=TEXT(VLOOKUP(E2,$A$2:$C$9,3,FALSE),"mm/dd/yyyy")

結果:

すべての一致する日付は、以下のスクリーンショットに示されているように返されました。
Apply and fill a formula

注: 上記の数式では:

  • "E2" は検索値です。
  • "A2:C9" は検索範囲です。
  • "3" は、値を返す列番号です。
  • "FALSE" は完全一致を取得することを示します。
  • "mm/dd/yyyy" は保持したい日付形式です。

4.3 VLOOKUPからのセルコメントを返す

Excelで、次のスクリーンショットに示すように、VLOOKUPを使用して一致するセルのデータとそれに関連するコメントの両方を取得する必要がありましたか?もしそうなら、以下に提供するユーザー定義関数がこのタスクを達成するのに役立ちます。

ステップ1:コードをモジュールにコピーします

  1. 「ALT」キーと「F11」キーを同時に押して、「Microsoft Visual Basic for Applications」ウィンドウを開きます。
  2. 「挿入」>「モジュール」をクリックし、次のコードを「モジュール」ウィンドウにコピーして貼り付けます。
    VBAコード: Vlookupで一致する値をセルのコメントと共に返す:
    Function VlookupComment(LookVal As Variant, FTable As Range, FColumn As Long, FType As Long) As Variant
    'Updateby Extendoffice
        Application.Volatile
        Dim xRet As Variant 'could be an error
        Dim xCell As Range
        xRet = Application.Match(LookVal, FTable.Columns(1), FType)
        If IsError(xRet) Then
            VlookupComment = "Not Found"
        Else
            Set xCell = FTable.Columns(FColumn).Cells(1)(xRet)
            VlookupComment = xCell.Value
            With Application.Caller
                If Not .Comment Is Nothing Then
                    .Comment.Delete
                End If
                If Not xCell.Comment Is Nothing Then
                    .AddComment xCell.Comment.Text
                End If
            End With
        End If
    End Function
  3. その後、コードウィンドウを保存して閉じます。

ステップ2:結果を取得するための数式を入力します

  1. 次に、以下の数式を入力し、フィルハンドルをドラッグしてこの数式を他のセルにコピーします。これにより、一致する値とコメントが同時に返されます。スクリーンショットをご覧ください:
    =vlookupcomment(D2,$A$2:$B$9,2,FALSE)

    Type the formula to get the result with comment

注: 上記の数式では:

  • "D2" は、対応する値を返したい検索値です。
  • "A2:B9" は使用したいデータテーブルです。
  • "2" は、返したい一致する値が含まれる列番号です。
  • 「FALSE」は、完全一致を取得することを示します。

4.4 テキストとして保存された数値のVLOOKUP

例えば、元の表ではID番号が数値形式で保存されており、検索セルではID番号がテキストとして保存されているデータ範囲があるとします。このような場合、通常のVLOOKUP関数を使用すると、#N/Aエラーが発生することがあります。この場合、正しい情報を取得するために、TEXT関数とVALUE関数をVLOOKUP関数内で使用することができます。以下は、これを実現するための数式です:
VLOOKUP numbers stored as text

ステップ1: 次の数式を適用して入力します

次の数式を空白のセルに適用し、塗りつぶしハンドルを下にドラッグしてこの数式をコピーしてください。

=IFERROR(VLOOKUP(VALUE(D2),$A$2:$B$8,2,0),VLOOKUP(TEXT(D2,0),$A$2:$B$8,2,0))

結果:

これで、次のスクリーンショットに示すように正しい結果が得られます。
Apply and fill a formula

注記:

  • 上記の数式において:
    • "D2" は、対応する値を返したい検索値です。
    • "A2:B8" は使用したいデータテーブルです。
    • "2" は、返したい一致する値が含まれている列番号です。
    • "0"は完全一致を取得することを示します。
  • この数式は、数字がある場所とテキストがある場所がわからない場合でもうまく機能します。