VLOOKUPは、垂直方向に編成されたテーブルからデータを取得するExcel関数です。ルックアップ値は、VLOOKUPに渡されるテーブルの最初の列に表示される必要があります。 VLOOKUPは、近似一致と完全一致、および部分一致のワイルドカード(*?)をサポートします。
垂直データ|列番号|正しく見えるだけ|マッチングモード|完全一致|近似一致|ファーストマッチ|ワイルドカードマッチ|双方向ルックアップ|複数の基準| #N / Aエラー|ビデオ
Vは垂直用です
VLOOKUPの目的は、次のように編成されたテーブルから情報を取得することです。
列Bの注文番号をルックアップ値として使用すると、VLOOKUPは任意の注文の顧客ID、金額、名前、および状態を取得できます。たとえば、注文1004の顧客名を取得するには、次の式を使用します。
=VLOOKUP(1004,B5:F9,4,FALSE) // returns "Sue Martin"水平データの場合、次のようになります。 HLOOKUP、INDEXとMATCH、またはXLOOKUP。
VLOOKUPは列番号に基づいています
VLOOKUPを使用する場合、テーブル内のすべての列に左から順に番号が付けられていると想像してください。特定の列から値を取得するには、「列インデックス」として適切な番号を指定します。たとえば、以下の名を取得するための列インデックスは2です。
名前とメールは列で取得できます3および4:
=VLOOKUP(H3,B4:E13,2,FALSE) // first name=VLOOKUP(H3,B4:E13,3,FALSE) // last name=VLOOKUP(H3,B4:E13,4,FALSE) // email addressVLOOKUPは右にしか見えません
VLOOKUPは右にしか見えません。取得するデータ(結果値)は、ルックアップ値の右側の任意の列に表示できます。
If左側の値を検索する必要があります。INDEXとMATCH、またはXLOOKUPを参照してください。
完全一致と近似一致
VLOOKUPには、正確と近似の2つの一致モードがあります。マッチングを制御する引数の名前は「range_lookup」です。これは、A1:A10のようなセル範囲と関係があるように見えるため、紛らわしい名前です。実際、この場合の「範囲」という単語は「値の範囲」を指します。range_lookupがTRUEの場合、VLOOKUPは正確な値ではなく値の範囲に一致します。この良い例は、VLOOKUPを使用して成績を計算することです。
range_lookupのデフォルトはTRUEであるということを理解することが重要です。これは、VLOOKUPがデフォルトで近似一致を使用することを意味します。これは危険な場合があります。 range_lookupをFALSEに設定して、完全一致を強制します。
注:完全一致の場合、FALSEの代わりにゼロ(0)を指定することもできます。
完全一致
ほとんどの場合、完全一致モードでVLOOKUPを使用することをお勧めします。これは、ルックアップ値として使用する一意のキーがある場合に意味があります。たとえば、このデータの映画のタイトル:
映画のタイトルの完全一致に基づいて年を見つけるためのH6の式は、次のとおりです。
=VLOOKUP(H4,B5:E9,2,FALSE) // FALSE = exact match近似一致
完全一致である必要はなく、完全一致が必要な場合は、近似モードを使用することをお勧めします。たとえば、以下の表G5:H10で手数料率を調べます。ルックアップ値は列Cから取得されます。この例では、ほとんどの場合、完全一致が見つからないため、近似一致モードでVLOOKUPを使用する必要があります。 D5のVLOOKUP式は、最後の引数をTRUEに設定することにより、近似一致を実行するように構成されています。
=VLOOKUP(C5,$G$5:$H$10,2,TRUE) // TRUE = approximate matchVLOOKUPは、G列の値をスキャンしてルックアップ値を探します。完全に一致するものが見つかった場合、VLOOKUPはそれを使用します。そうでない場合、VLOOKUPは「ステップバック」し、前の行と一致します。
注:VLOOKUPで近似一致モードを使用する場合、データはルックアップ値の昇順で並べ替える必要があります。
最初の一致
値が重複している場合、VLOOKUPは、一致モードが正確であるときに最初の一致を検索します。以下の画面では、VLOOKUPは「緑」の色の価格を見つけるように構成されています。緑の色のエントリが3つあり、VLOOKUPは最初のエントリの価格である17ドルを返します。セルF5の数式は次のとおりです。
=VLOOKUP(E5,B5:C11,2,FALSE) // returns 17
ワイルドカード一致
VLOOKUP関数はワイルドカードをサポートしているため、ルックアップ値に対して部分一致を実行できます。たとえば、ルックアップ値の一部のみを入力した後、VLOOKUPを使用してテーブルから値を取得できます。 VLOOKUPでワイルドカードを使用するには、最後の引数range_lookupにFALSEまたは0を指定して、完全一致モードを指定する必要があります。 H7の数式は、セルH4に「Aya」と入力した後、名「Michael」を取得します。
=VLOOKUP($H$4&"*",$B$5:$E$104,2,FALSE)
詳細な説明はこちらをご覧ください。
双方向ルックアップ
VLOOKUP関数内の列index引数は通常、静的な数値としてハードコードされています。ただし、MATCH関数を使用して適切な列を見つけることにより、動的列インデックスを作成することもできます。この手法を使用すると、行と列の両方で一致する動的な双方向ルックアップを作成できます。以下の画面では、VLOOKUPは名前と月に基づいてルックアップを実行するように構成されています。 H6の式は次のとおりです。
=VLOOKUP(H4,B5:E13,MATCH(H5,B4:E4,0),0)
詳細については、この例を参照してください。
注:一般に、INDEXとMATCHは、双方向ルックアップを実行するためのより柔軟な方法です。
複数の基準
VLOOKUP関数は、複数の基準をネイティブに処理しません。ただし、ヘルパー列を使用して複数のフィールドを結合し、VLOOKUP内の複数の条件のようにこれらのフィールドを使用できます。以下の例では、列Bは、名前と名前を次の式で連結するヘルパー列です。
=C5&D5 // helper columnVLOOKUPルックアップ値を作成するために同じことを行うように構成されています。 H6の式は次のとおりです。
=VLOOKUP(H4&H5,B5:E13,4,0)
詳細については、この例を参照してください。
注:INDEX、MATCH、およびXLOOKUPは、複数の基準に基づいてルックアップを処理するためのより堅牢な方法です。
VLOOKUPおよび#N / Aエラー
VLOOKUPを使用すると、必然的に#N / Aエラーが発生します。 #N / Aエラーは、単に「見つかりません」を意味します。たとえば、次の画面では、ルックアップ値「トイストーリー2」がルックアップテーブルに存在せず、3つのVLOOKUP数式すべてが#N / Aを返します。
NAエラーを「トラップ」する1つの方法は、次のようなIFNA関数を使用することです。
H6の式は次のとおりです。
=IFNA(VLOOKUP(H4,B5:E9,2,FALSE),"Not found")メッセージは必要に応じてカスタマイズできます。 VLOOKUPが#N / Aを返したときに何も返さない(つまり、空白の結果を表示する)には、次のような空の文字列を使用できます。
=IFNA(VLOOKUP(H4,B5:E9,2,FALSE),"") // no message#N / Aエラーは、何かが間違っていることを示しているので便利です。実際には、次のような多くの理由でこのエラーが表示される可能性があります。
- ルックアップ値がテーブルに存在しない
- ルックアップ値のつづりが間違っている、または含まれている余分なスペース
- 一致モードは正確ですが、概算である必要があります
- テーブル範囲が正しく入力されていません
- VLOOKUPをコピーしており、テーブル参照が正しくありませんロック済み
続きを読む:#N / AエラーのないVLOOKUP
VLOOKUPの詳細
- その他のVLOOKUPの例
- VLOOKUPビデオ
- VLOOKUPを使用するための23のヒント
その他の注意事項
- Range_lookupは、値が正確に一致する必要があるかどうかを制御します。デフォルトはTRUE =完全一致を許可します。
- range_lookupをFALSEに設定すると完全一致が必要になり、TRUEに設定すると完全一致が許可されます。
- range_lookupがTRUEの場合(デフォルト設定)、不正確な一致により、VLOOKUP関数は、まだ値よりも小さいテーブル内の最も近い値と一致します。
- range_lookupを省略すると、VLOOKUP関数は不正確な値を許可します。一致しますが、存在する場合は完全一致を使用します。
- range_lookupがTRUE(デフォルト設定)の場合、テーブルの最初の行のルックアップ値が昇順でソートされていることを確認してください。そうしないと、VLOOKUPが誤った値または予期しない値を返す可能性があります。
- range_lookupがFALSE(完全一致が必要)の場合、テーブルの最初の列の値を並べ替える必要はありません。