VLOOKUP関数

VLOOKUP関数は、エクセルで特定の値を検索し、その値に対応するデータを返すために使われます。以下は、基本的な使用例です。例えば、次のような商品データがあるとします。

商品コード商品名価格
A001リンゴ100
A002バナナ120
A003オレンジ150

商品コード「A002」に対応する「商品名」を取得したい場合、次のようにVLOOKUPを使います。

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

検索値: 検索したい値 (例: A002)

  • 範囲: データが含まれている範囲 (例: A2)
  • 列番号: 返したいデータがある列の番号 (例: 商品名は2列目)
  • 検索の型: 完全一致の場合はFALSE、近似一致の場合はTRUEを指定します。通常はFALSEを使用します。

=VLOOKUP("A002", A2:C4, 2, FALSE)

この式を使うと、「バナナ」が返されます。

価格を取得する

商品コード「A003」に対応する価格を取得したい場合は、次のようにします。

=VLOOKUP("A003", A2:C4, 3, FALSE)

この式で「150」が返されます。

VLOOKUPは、左端の列を検索対象とし、右側の列からデータを返すので、検索値が範囲の一番左の列にある必要があります。VLOOKUP関数は単純な検索だけでなく、工夫して使うことで様々な応用が可能です。以下に「変わった使用例」と「応用例」を紹介します。

複数の条件で検索するVLOOKUP(補助列の利用)

VLOOKUPは通常1つの検索値しか扱えませんが、複数条件を扱いたい場合、条件を結合して1つの値にしてから検索する方法があります。

例:「A001」かつ「大阪」の価格を取得したい場合

商品コード地域価格
A001東京100
A001大阪110
A002東京120
A002大阪130

2つの条件(商品コードと地域)を結合した列を作成し、その列で検索します。

ステップ1:補助列を作成

新しい列に商品コードと地域を結合します。例えばD列に以下の式を入れます。

=A2&B2
商品コード地域価格補助列
A001東京100A001東京
A001大阪110A001大阪
A002東京120A002東京
A002大阪130A002大阪

ステップ2: VLOOKUPで検索結合した値「A001大阪」を検索します。

=VLOOKUP("A001大阪", D2:E5, 2, FALSE)

この式で「110」が返されます。

IF関数と組み合わせた応用

VLOOKUPをIF関数と組み合わせることで、条件に応じた異なる検索を行うことができます。

例:価格が割引中ならセール価格を、割引がない場合は通常価格を返す場合

商品コード商品名価格セール価格
A001リンゴ10080
A002バナナ120100
A003オレンジ150130
=IF(ISBLANK(VLOOKUP("A001", A2:D4, 4, FALSE)), VLOOKUP("A001", A2:C4, 3, FALSE), VLOOKUP("A001", A2:D4, 4, FALSE))

この式では、セール価格が空欄でない場合はセール価格を返し、空欄の場合は通常価格を返します。

列を逆に検索する応用(CHOOSE関数との併用)

VLOOKUPは通常、左側の列で検索し、右側の列からデータを返しますが、CHOOSE関数を使うことで右側の列を検索し、左側のデータを返すことが可能です。

例:商品名から商品コードを逆引きしたい場合

商品名商品コード
リンゴA001
バナナA002
オレンジA003
=VLOOKUP("バナナ", CHOOSE({1,2}, B2:B4, A2:A4), 2, FALSE)

CHOOSE({1,2}, B2:B4, A2:A4)の部分は、範囲を逆にしてVLOOKUPに渡します。これにより、右側の列(B列)で検索し、左側の列(A列)の値を返すことが可能になります。

別シートのデータを検索

VLOOKUPを使って、別のシートのデータを参照することもできます。

例:シート名が「価格表」のシートからデータを検索する場合

=VLOOKUP("A001", '価格表'!A2:C10, 3, FALSE)

この式で、「価格表」シートのA2の範囲から「A001」に対応するデータを取得します。

部分一致のVLOOKUP(ワイルドカードの使用)

完全一致でなくても、部分一致でデータを検索することができます。例えば、部分的な商品コードを使って検索する場合、ワイルドカード(*)を使用します。

例:商品コードが「A」で始まる商品を検索する。

=VLOOKUP("A*", A2:C4, 2, FALSE)

INDEX関数とMATCH関数を組み合わせることで、VLOOKUPよりも柔軟にデータを検索できます。特に、VLOOKUPのように左から右の列だけでなく、任意の列の値を検索できるため、より強力です。

INDEX関数とMATCH関数を使った例

商品コード商品名価格
A001リンゴ100
A002バナナ120
A003オレンジ150

商品コード「A002」に対応する「商品名」と「価格」をINDEXMATCHを使って取得する方法です。

=INDEX(範囲, MATCH(検索値, 検索範囲, 検索の型), 列番号)

商品名を取得する例:=INDEX(B2:B4, MATCH("A002", A2:A4, 0))

この式でMATCH関数は、商品コード「A002」が何行目にあるかを探し、その行番号をINDEX関数に渡して、商品名「バナナ」を取得します。

価格を取得する例:=INDEX(C2:C4, MATCH("A002", A2:A4, 0))

この式では、同様にMATCHで行番号を取得し、INDEXで価格の列から「120」を取得します。

複数列の検索結果を結合して表示

先ほどの「商品名」と「価格」を1つのセルに結合して表示したい場合、以下のように&演算子を使います。

=INDEX(B2:B4, MATCH("A002", A2:A4, 0)) & " - " & INDEX(C2:C4, MATCH("A002", A2:A4, 0))

この式で「バナナ – 120」と表示されます。

VLOOKUPとINDEX+MATCHの違い

  • VLOOKUPは左端の列でしか検索できませんが、INDEX + MATCHは任意の列で検索可能です。
  • INDEX + MATCHの組み合わせは、データが右から左の順に検索する必要がある場合や、範囲が複雑な場合に便利です。

このように、INDEXMATCHを使うことで、VLOOKUPの制限を克服し、より柔軟な検索が可能になります。

タイトルとURLをコピーしました