【エクセル】VLOOKUP関数で複数の条件で検索し抽出!3つ以上も可能な方法

エクセルでVLOOKUP関数を複数条件で使う方法

Microsoft Excel(エクセル)のVLOOKUP関数は、表から値を抽出することができる代表的な関数です。

表を縦方向に検索して検索値を抽出することが出来ますが、検索値が一つだけだと抽出データが重複してしまう場合がありませんか?

そんな時は、VLOOKUP関数の検索条件を複数設定すると、検索したい値を正確に見つけることができます。

この記事では、VLOOKUP関数の『複数条件』の設定方法を解説します。

また、最後の見出しでは、VLOOKUP関数を使わず、INDEX関数とMATCH関数を使った複数条件の検索方法も紹介します。VLOOKUP関数の利用がどうしても苦手だという方は、こちらも参考にしてみて下さい。

VLOOKUP関数とは(おさらい)

まずはエクセルのVLOOKUP関数の使い方をおさらいします。

VLOOKUP関数(ブイルックアップ)は、

指定した検索条件に『当てはまる値』を指定した検索範囲から調べて、指定した位置から抽出することが出来る

関数です。

もう少しかみ砕いて、具体的な例で説明すると、

商品番号が『25』の商品を、指定した商品リスト表から調べて、表の左から3列目の『商品名』を抽出することが出来る

関数です。

この説明でも分かりづらい方は、この後に紹介するVLOOKUP関数の使い方を見れば、理解出来るようになると思います。いったん『表から条件に合った値を抽出することが出来るんだな』と、思っていただいて結構です。

VLOOKUP関数の構文は下のとおりです。「検索値」「検索範囲」「列番号」「検索方法」の4つの引数を指定する必要があります。

=VLOOKUP(検索値検索範囲列番号、[検索方法])

下の商品リスト表を例に、VLOOKUP関数で具体的にできることを説明します。

商品リスト表には、各列ごとに[商品番号][商品カテゴリ][商品名][値段]がまとめられています。

図解.VLOOKUP関数のイメージ図
図解.VLOOKUP関数のイメージ図

枠外のセルH3(赤色)にVLOOKUP関数を用いることで、商品番号”35”(青色)の商品名をB3~E10の検索範囲(緑色)から商品名「照明器具」を抽出することが出来ます。

この表は説明用に小さくしているので、目視でも商品番号”35”の商品名を見つけることは可能です。

しかし、スクロールしないと見れないような膨大なデータの中から検索値を抽出する必要がある時はVLOOKUP関数が大活躍します。

VLOOKUP関数の基礎から復習したい方は、以下の記事でさらに詳しく紹介していますので、合わせて参考にしてください。

👇VLOOKUP関数の復習はこちらの記事から。

VLOOKUP関数の使い方(おさらい)

続いて、VLOOKUP関数の使い方をおさらいを兼ねて手順を追って紹介します。

使い方は十分熟知している方は次の見出しに読み進めてください。

手順1検索値を入力

検索範囲から検索したい条件(検索値)をセルG3に入力します。ここでは「商品番号”35”の商品名を抽出する」ために、引数「検索値」で指定するために「35」と入力します。

VLOOKUP関数で使う検索値を入力
VLOOKUP関数で使う検索値を入力

手順2. VLOOKUP関数を挿入するセルを選択

VLOOKUP関数を挿入するセルH3をクリックします。つまり、抽出結果を表示したいセルのことです。

手順3「関数の挿入」ボタンからVLOOKUP関数を検索

「数式」タブの「関数の挿入」ボタンをクリックします。「関数の挿入」ダイアログボックスが表示されるので、VLOOKUP関数を検索し、「OK」ボタンをクリックします。

VLOOKUP関数を検索して挿入
VLOOKUP関数を検索して挿入

手順4VLOOKUP関数の第1引数「検索値」を設定

「関数の引数」画面が表示されます。まず、VLOOKUP関数の第1引数「検索値」を、手順1で入力したG3セルを指定します。

VLOOKUP関数の第1引数「検索値」を指定
VLOOKUP関数の第1引数「検索値」を指定

手順5.VLOOKUP関数の第2引数「検索範囲」を設定

続いて、VLOOKUP関数の第2引数「検索範囲」を指定します。表全体から値を抽出したいので、検索範囲はB3 セルからE10セルまでを選択します。

VLOOKUP関数の第2引数「検索範囲」を指定
VLOOKUP関数の第2引数「検索範囲」を指定

手順6.VLOOKUP関数の第3引数「列番号」を設定

続いて、VLOOKUP関数の第3引数「列番号」を数字で入力します。抽出したい商品名は、「商品番号」列から数えて左から3列目にあるので、「3」と入力します。

VLOOKUP関数の第3引数「列番号」を指定
VLOOKUP関数の第3引数「列番号」を指定

手順7.VLOOKUP関数の第4引数「検索方法」を設定

最後に、引数「検索方法」は、完全一致を条件に検索するため、「FALSE」と入力してください。すべての引数を設定し終えたら「OK」を押します。

VLOOKUP関数の第4引数「検索方法」を指定
VLOOKUP関数の第4引数「検索方法」を指定

手順8.VLOOKUP関数の抽出値を確認

そうすると、VLOOKUP関数の結果がH3セルに表示されます。検索範囲の中から商品番号”35”の左から3列目の値である”照明器具”を抽出することができました。

図解.VLOOKUP関数の抽出結果を確認
図解.VLOOKUP関数の抽出結果を確認

【補足説明】VLOOKUP関数を作成する方法について

手順3~7では、【関数の挿入】ボタンを使用して関数の引数を一つずつ指定していきました。しかし、関数は、数式バーやセルに直接入力することが出来ます。

関数に慣れるためにも、セル内で関数を作成して、「=VLOOKUP(G3,B3:E10,3,FALSE)」という数式を作成した方が時短に繋がります。

セルや数式バーにVLOOKUP関数を挿入
セルや数式バーにVLOOKUP関数を挿入

VLOOKUP関数で複数条件を指定する方法

それでは、本記事の本題である、VLOOKUP関数を複数の条件で利用する方法を紹介します。

VLOOKUP関数で複数の条件で検索する方法は?
VLOOKUP関数で複数の条件で検索する方法は?

まず、上の図を見て下さい。

「B店のブラシ」の値段をVLOOKUP関数で検索したくても、B列には”「B店」のセルが3つあり、「ブラシ」のセルも3つあり、対応に困ります。

こんな時は、表自体を少し加工し、VLOOKUP関数の数式を編集することで、店舗名と商品名の2つの条件で値段を抽出することができます。

それでは下の見出しで解説します。

複数の条件に対応するために使う2つのテクニック

それでは、さきほどの表を使って、VLOOKUP関数で「B店のブラシ」の値段を抽出する方法を解説します。

結論から先に言ってしまうと、下の2つのテクニックを使うだけでVLOOKUP関数を複数条件で利用出来ます。

複数条件に対応する方法

1.表にそれぞれの条件を結合したVLOOKUP関数用のキー列を挿入する
2.VLOOKUP関数の1つ目の引数「検索値」に”&”を利用する

テクニック1.表にキー列を追加

まず、1つ目のテクニックである、表にそれぞれの条件を結合した「VLOOKUP関数用のキー列を挿入」について説明します。

キー列」とは、関数を利用出来るようにするために鍵(キー)となる新規列を表に追加することです。

VLOOKUP関数で「B店」で検索しても「ブラシ」で検索してもダメなので、下の図のように、「B店ブラシ」という新しい検索用の文字列を作成します。

VLOOKUP関数の複数条件を利用する方法①(鍵(キー)となる新規列を追加)
VLOOKUP関数の複数条件を利用する方法①(鍵(キー)となる新規列を追加)

テクニック2.VLOOKUP関数に「&」を利用

続いて2つ目のテクニック、「VLOOKUP関数の1つ目の引数「検索値」に”&”を利用」について説明します。

VLOOKUP関数の第1引数「検索値」は、下の図のように、「&」演算子を使って条件をつなぎ合わせる(結合)ことが出来ます。

=VLOOKUP(G4&H4,$D$4:$E$11,2,FALSE)

VLOOKUP関数の複数条件を利用する方法➁(検索条件を結合)
VLOOKUP関数の複数条件を利用する方法➁(検索条件を結合)

こうすることで、表内に新規に追加した「キー列」の中から、引数「検索値」に設定した検索条件を見つけることが出来るようになります。

次の見出しでは、この2つのテクニックを実際に活用して、VLOOKUP関数を複数の条件で利用する方法を解説します。

複数条件(2つ)でVLOOKUP関数を利用する方法

それでは、実際に2つのテクニックを使って、「B店のブラシ」の値段をVLOOKUP関数で見つける手順を紹介します。

VLOOKUP関数で複数の条件で検索する方法は?
VLOOKUP関数で複数の条件で検索する方法は?

手順1.キー列を追加

「商品名」の右側に新規に1列を追加します。次に、「店舗」と「商品名」の文字を「&」演算子を使って結合し、検索用のキーを作成します。

=B4&C4

「&」演算子を用いて条件の文字を結合
「&」演算子を用いて条件の文字を結合

手順2.キー列を完成

手順1で作成したキーを、下のセルにもコピペして、「キー」列を完成させます。

VLOOKUP関数の複数条件用の「キー列」を完成
VLOOKUP関数の複数条件用の「キー列」を完成

手順3.VLOOKUP関数を挿入

VLOOKUP関数をI4セルに挿入します。1つの目の引数「検索値」を、G4&H4”というように、店舗名のセルG4と商品名のセルH4を「&」演算子で結合します。残りの引数の設定方法は、下の図のように、通常のVLOOKUP関数の利用と同じです。    

=VLOOKUP(G4&H4,$D$4:$E$11,2,FALSE)

VLOOKUP関数を2つの複数条件で検索した結果
VLOOKUP関数を2つの複数条件で検索した結果

その結果、「B店のブラシ」の値段である「600」円を抽出することが出来ました。

このように”&”を用いて表内にキー列を追加し、さらにVLOOKUP関数内の検索値も”&”を利用することで、複数条件の設定が可能です。

「&」演算子を2つではなく、3つ用いることで、3つの複数条件でVLOOKUP関数を利用することも可能です。

複数条件(3つ)でVLOOKUP関数を利用する方法

今度は、3つの複数条件でVLOOKUP関数を使う事例を紹介します。

下の表を使って、B店のブラシの一般価格」の値段をVLOOKUP関数で検索します。

VLOOKUP関数を3つの複数条件で利用
VLOOKUP関数を3つの複数条件で利用

手順1.キー列を追加

「商品名」の右側に新規に1列を追加します。「店舗」と「商品名」と「会員/非会員」を「&」演算子を使って結合し、検索用のキーを作成します。下のセルにも全てコピーして「キー列」を完成させます。

=B4&C4&D4

VLOOKUP関数の3つの複数条件用の「キー列」を完成
VLOOKUP関数の3つの複数条件用の「キー列」を完成

手順2.VLOOKUP関数を挿入

VLOOKUP関数をK4セルに挿入します。1つの目の引数「検索値」を、「H4&I4&J4」というように、店舗名のセルH4と商品名のセルI4と会員/非会員のセルJ4を「&」を使って文字を結合します。残りの引数の設定方法は、下の図のように、通常のVLOOKUP関数の利用と同じ方法です。    

=VLOOKUP( H4&I4&J4,E3:F11,2,FALSE)

VLOOKUP関数を3つの複数条件で検索した結果
VLOOKUP関数を3つの複数条件で検索した結果

その結果、「B店のブラシの一般価格」の値段500円を抽出することが出来ました。

複数条件(4つ)でVLOOKUP関数を利用する方法

もちろん、4つ以上の複数条件でVLOOKUP関数を使うこともできます。

繰り返しになりますが、ポイントは「&」演算子で文字を結合してキー列を設定することと、VLOOKUP関数の第1引数にも「&」演算子で条件を結合することです。

=VLOOKUP( I4&J4&K4&L4,F3:G11,2,FALSE)

VLOOKUP関数を4つの複数条件で検索した結果
VLOOKUP関数を4つの複数条件で検索した結果

HLOOKUP関数やXLOOKUP関数でも複数条件は可能

VLOOKUP関数以外にも、横方向に検索値を見つけるHLOOKUP関数や、VLOOKUP関数の後継関数であるXLOOKUP関数でも、下の表のように同様の手順で複数条件の指定が可能です。

VLOOKUP関数と同様に、表の中に「キー列」を追加し、1つ目の引数「検索値」に”&”を利用するだけです。

HLOOKUP関数でも複数条件の指定が可能
HLOOKUP関数でも複数条件の指定が可能

下の記事でHLOOKUP関数の複数条件の使い方を詳しく紹介していますので、ぜひ参考にしてみてください。

XLOOKUP関数の複数条件の使い方は、以下の記事で詳しく紹介しています。

INDEX関数とMATCH関数を使うと、「キー列」が不要

VLOOKUP関数で複数条件を指定する場合、「キー列」を追加するため表の見栄えが悪くなることが気になる人もいるのではないでしょうか。

そんな時は、VLOOKUP関数を利用せず、INDEX関数とMATCH関数を組み合わせて利用することで、表の中から任意の値を抽出することが可能です。

INDEX関数とは

INDEX関数(インデックス)は、指定された行と列が交差する位置にあるセルの値を抽出する関数です。VLOOKUP関数と同じく、表から抽出することが出来るので、この関数をVLOOKUP関数の代わりに利用します。

INDEX関数の構文は下のとおりです。

=INDEX(配列,行番号,[列番号])

配列は検索範囲のことで、行番号と列番号は数値の入力されたセルを指定するか、直接関数の中に数値を指定します。

実施に下の商品リスト表でINDEX関数を使ってみます。

図解.INDEX関数の使い方
図解.INDEX関数の使い方

F11セルに下のINDEX関数が挿入されています。表(B4:D11)の中から5行目(F6セル)の3列目(G6セル)の値(3,500円)を抽出することが出来ています。

=INDEX(B4:D11,F6,G6)

MATCH関数とは

MATCH 関数(マッチ)は、検索範囲の中から検索値を検索し、その範囲内での検索値の相対的な位置を返します。 

=MATCH(検索値, 検索範囲, [照合の型])

検索値: 検索範囲の中で照合する値を指定します。

検索範囲: 検索するセルの範囲を指定します。

照合の型 : ”-1”、”0”、”1 ”の数値のいずれかを指定しますが、”1 ”の場合は省略可能です。今回は、「検索値に一致する値のみが検索の対象」とする”0”を利用します。

実際に、下の図でMATCH関数の使用例を説明します。

MATCH関数の使い方
MATCH関数の使い方

上の図では、B5セルに「=MATCH($C$2,B2:E2,0)」とMATCH関数を挿入しています。

検索値のC2セル(商品カテゴリ)は、検索範囲のB2:E2の左から2番目にあるので、関数の結果は”2”と表示されます。

INDEX関数とMATCH関数を組み合わる手順

それでは、下の商品リストを例に、「B店のブラシの値段を抽出するためにINDEX関数とMATCH関数を使って、複数条件で検索する方法を手順に沿って解説します。

INDEX関数とMATCH関数で複数条件で検索する方法
INDEX関数とMATCH関数で複数条件で検索する方法

INDEX関数が『VLOOKUP関数の代わりに使う関数』で、『MATCH関数が検索範囲から抽出する位置を指定する役割』を果たします。

手順1.表の枠外に検索条件を書き出す

表の枠外に複数の条件を書き出します。今回は、条件の1つ目が店舗名が“B店”、条件2つ目のが商品名が“ブラシ”となります。

INDEX関数とMATCH関数で複数条件で検索する手順①
INDEX関数とMATCH関数で複数条件で検索する手順①

手順2.INDEX関数を挿入する

検索値を抽出したいセルに、INDEX関数を挿入し、一つ目の引数「配列」を指定します。「配列」は表全体のことを指しますので、列項目を除くB4:D11を指定します。

=INDEX(B4:D11,

INDEX関数とMATCH関数で複数条件で検索する手順➁
INDEX関数とMATCH関数で複数条件で検索する手順➁

手順3.INDEX関数の中にMACH関数を挿入する

INDEX関数の2つ目の引数「行番号」を指定するために、MATCH関数を挿入します。

MATCH関数の1つ目の引数「検索値」は手順1で作成した複数条件のセルを指定します。MATCH関数の2つ目の引数「検索範囲」は、B列の範囲(B4:B11)とC列の範囲(C4:C11)を”&”でつないで指定します。3つ目の引数「検索の型」は”0”を指定してください。

=INDEX(B4:D11,MATCH(F4&G4,B4:B11&C4:C11,0)

INDEX関数とMATCH関数で複数条件で検索する手順③
INDEX関数とMATCH関数で複数条件で検索する手順③

手順4.INDEX関数の3つ目の引数「列番号」を指定

INDEX関数の3つ目の引数「列番号」を指定します。値段は表の3列目に存在するため、”3”と指定します。

これで関数は完成ですが、「Enter」キーは押さず、次の手順5を操作してください。Office365のバージョンを利用している方は、「Enter」キーを押しても大丈夫です。

=INDEX(B4:D11,MATCH(F4&G4,B4:B11&C4:C11,0),3)

INDEX関数とMATCH関数で複数条件で検索する手順④
INDEX関数とMATCH関数で複数条件で検索する手順④

手順5.「Ctrl」キー+「Shift」+「Enter」キーで確定

関数を確定させるため、「Ctrl」キー+「Shift」を押しながら「Enter」キーを押してください

下の図のように“B店”の“ブラシ”の値段”600円”が抽出することが出来ました。また、数式バーを見た時に、{ }で関数全体が囲まれていれば関数が正常に完成しています。

INDEX関数とMATCH関数で複数条件で検索する手順⑤
INDEX関数とMATCH関数で複数条件で検索する手順⑤

VLOOKUP関数の複数条件は「キー列」の追加がポイント

今回はVLOOKUP関数の複数条件を設定方法をご紹介しました。表に「キー列」の追加し、引数に”&”を用いるだけの方法なので、想像より簡単だったと思います。誰でも利用出来ますので、ぜひこの機会にVLOOKUP関数をさらにマスターしましょう!

-Excel(エクセル), 数式・関数
-