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

エクセルのVLOOKUP関数を複数条件で使用

Excel(エクセル)のVLOOKUP関数(ブイルックアップ)は、作業を効率化出来る代表的な関数です。

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

今回は、VLOOKUP関数の使い方を復習しつつ、『複数の条件』を検索値にすることで見つけたい値を正確に抽出することが出来るVLOOKUP関数の『複数条件の設定方法を解説します。

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

VLOOKUP関数とは(おさらい)

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

VLOOKUP関数は、

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

関数です。

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

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

関数です。

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

VLOOKUP関数の構文は下のとおりで、4つの引数を指定する必要があります。

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

下の商品リスト表を例に具体的に説明します。

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

商品リスト表のセルB4~セルE15(緑色)には、[商品番号][商品カテゴリ][商品名][金額]がまとめられています。枠外のセルH4(赤色)にVLOOKUP関数を用いることで、商品番号”25”(黄色)の商品名をB4~E15の検索範囲(緑色)から抽出することが出来ます。

この表は説明用に小さくしているので、目視でも商品番号”25”の商品名を見つけることは可能ですが、スクロールしないと見れないような膨大なデータの中から検索値を抽出する必要がある時はVLOOKUP関数が大活躍します。

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

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

続いて、VLOOKUP関数の使い方をおさらいを兼ねて手順を追って紹介します。使い方は十分熟知している方は次の見出しに読み進めてください。

手順1. 検索値を入力

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

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

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

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

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

【関数の挿入】画面が表示されますので、VLOOKUP関数を検索し、【OK】ボタンをクリックします。

図解.VLOOKUP関数を「関数の挿入」ボタンから挿入
VLOOKUP関数の挿入

手順4. VLOOKUP関数の引数を設定

【関数の引数】画面が表示されるので、検索値検索範囲列番号検索方法の4つの引数を下の図を参考に指定して「OK」で画面を閉じます。引数「検索方法」は、完全一致を条件に検索するため、”FALSE”と入力してください。

図解.VLOOKUP関数の引数の設定
VLOOKUP関数の引数の設定

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

検索範囲の中から商品番号”25”の左から3列目の値である”風邪薬”が抽出されました。

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

【補足説明】VLOOKUP関数の挿入

手順3,4では、【関数の挿入】ボタンを使用して関数を挿入しましたが、数式バーやセルに直接入力することも出来ます。関数の使用に慣れている方は、VLOOKUP関数を挿入するセルに「=VLOOKUP(G4,$B$4:$E$15,3,FALSE)」を作成した方が時短に繋がります。

図解.セルや数式バーにVLOOKUP関数を挿入した方が時短に繋がる
セルや数式バーにVLOOKUP関数を挿入

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

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

まず、上の図を見て下さい。VLOOKUP関数で”B店”の”ブラシ”の値段を見つけたくても、”B店”のセルは3つあり、”ブラシ”のセルは3つありますよね。

このように、検索する条件が一つだけだと抽出データが2つ以上あり重複してしまう場合があります。そんな時は、どのように対応すればいいのでしょうか。

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

複数の条件に対応する方法

それでは、さきほどの表を使って、”B店”の”ブラシ”という2つの条件に対応する方法を例に紹介します。

結論から先に言ってしまうと、下の2つの手順を実施するだけで複数条件に対応出来ます。

複数条件に対応する方法

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

まず、一つ目の「表にそれぞれの条件を結合したVLOOKUP関数用のキー列を挿入」を説明します。

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

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

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

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

VLOOKUP関数の引数は、下の図のように、”&”を使って条件をつなぎ合わせる(結合)ことが出来ます。こうすることで、表内に新規に追加した「キー列」の中から、引数「検索値」に設定した検索条件を見つけることが出来るようになります。

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

次の見出しで、この複数条件を使う2つのテクニックを使って、VLOOKUP関数の複数条件の利用方法を説明します。

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

まずは下の表を使って、”B店”の”ブラシ”の値段をVLOOKUP関数で見つける手順を紹介します。

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

手順1.キー列を追加

「商品名」の右に新規に1列を追加し、「店舗」と「商品名」を“&”で結合し、検索用のキーを作成します。

=B4&C4

“&”で検索条件を結合
“&”で検索条件を結合

手順2.キー列を完成

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

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

手順3.VLOOKUP関数を挿入

VLOOKUP関数を挿入し、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関数を利用する方法

下の表を使って、”B店”の”ブラシ”の”一般価格”の値段をVLOOKUP関数で見つける手順を紹介します。

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

手順1.キー列を追加

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

=B4&C4&D4

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

手順2.VLOOKUP関数を挿入

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

=VLOOKUP(H4&I4&J4,$E$3:$F$11,2,FALSE)

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

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

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

VLOOKUP関数以外にも、HLOOKUP関数やXLOOKUP関数でも、下の表のように同様の手順で複数条件の指定が可能です。

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

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

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

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関数をさらにマスターしましょう!