VLOOKUPを使って「複数の条件を満たすデータを探したい」と思ったときに、どうすればいいか分からず困ってしまうことありませんか?
今回の記事では、簡単に実践できる、VLOOKUP関数を使って複数条件でデータを抽出する方法とVLOOKUP以外の関数を使い複数条件でデータを抽出する方法をご紹介します。
VLOOKUP関数ってどんな関数?
VLOOKUP関数の使い方を簡単におさらいしておきましょう。
「指定した範囲の左端の列から検索値を探し、見つかった行の指定した列にあるデータを取り出す」関数です。
VLOOKUP関数は、以下の4つの引数(ひきすう)を使って設定します。
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
- 検索値:探したいデータ
- 範囲:検索する表全体
- 列番号:取得したいデータが範囲の左から何番目にあるか
- 検索方法:完全一致か近似一致か
VLOOKUP関数は、検索できるのが1つの条件だけ、そして検索する列は必ず表の左端にある必要があります。これがVLOOKUP単体で複数条件に対応できない理由です。

VLOOKUP関数についてより理解を深めたい方は以下の記事を参考にしてください。
例題1:2つの条件で検索結果を抽出したい場合
準備:今回の例で使うデータを見てみよう
今回、複数条件でのVLOOKUPを解説するために、以下のデータを使います。

この表から、「支店が『横浜』」かつ「営業担当者が『鈴木』」の売上を抽出したい、という場合を考えてみましょう。
方法1:作業列を追加してVLOOKUPを使う方法

この方法は、元の表に作業列と呼ばれる新しい列を追加し、そこに複数の条件を結合したデータを作成することで、VLOOKUPを適用できるようにする方法です。
- 指定したい複数の条件を&(アンパサンド)で繋ぐ
ステップ1:作業列を追加する
まず、元のデータの左端に新しい列(たとえばA列)を挿入します。この列に、検索条件となる「支店」と「営業担当者」を結合したデータを作成します。

ステップ2:関数を入力する
追加した作業列に、条件となるセルを&(アンパサンド)でつなぎ合わせる関数を入力します。この&は、文字列を結合する役割を持っています。

ステップ3:VLOOKUP関数でデータを抽出する
次に、抽出したい場所にVLOOKUP関数を入力します。検索値には、抽出したい条件を&で結合したものを使います。
これで、複数の条件に一致した売上を抽出することができます!
数式:=VLOOKUP(I1&I2, A2:E7, 5, FALSE)

方法2:INDEX関数とMATCH関数を組み合わせる方法(中級者向け)
この方法は、作業列を使わずに、VLOOKUP関数では難しい複数条件での検索を可能にします。少し複雑に感じるかもしれませんが、慣れれば非常に便利です。
INDEX関数とMATCH関数のおさらい
VLOOKUPの使い方については別記事で解説していますが、INDEXとMATCH関数についても簡単に解説しておきます。
- INDEX関数:
指定した範囲の中から、行番号と列番号を元にデータを抽出する関数です。 - MATCH関数:
指定した範囲の中で、検索値が何番目にあるかを返す関数です。
この2つを組み合わせることで、「MATCH関数で探したいデータの位置(行番号)を見つけ、INDEX関数でその位置にあるデータを取り出す」という流れで、複数条件での検索を実現します。
ステップ1:検索値と検索範囲を作成する
まず、MATCH関数で使う「検索値」と「検索範囲」を準備します。
- 検索値:
抽出したい条件を&で結合します。 - 検索範囲:
条件が入力されている列を&で結合します。

ステップ2:MATCH関数でデータの位置を探しINDEX関数でデータを抽出する
次に、MATCH関数で複数条件に一致するデータの位置(行番号)を探します。また、MATCH関数で見つけた行番号をINDEX関数に渡してデータを抽出しましょう。
- INDEXの範囲:抽出したいデータの列を指定します。
- INDEXの行番号:MATCH関数が返す「行番号」を使います。
数式:=INDEX(E2:E7,MATCH(I1&I2, B2:B7&C2:C7, 0)
この式をCtrl + Shift + Enterで入力します。これにより、{}で囲まれた配列数式として実行されます。配列数式にすることで、複数のセルを同時に処理できるようになり、複数条件での検索が可能になります。

例題2:3つの条件で検索してみよう

ここからは、さらに条件を増やした場合の例を見ていきましょう。
先ほどの表に「製品名」の条件を追加して、「支店が『横浜』」かつ「営業担当者が『鈴木』」かつ「製品名が『モニター』」の売上を抽出したい、という場合を考えます。
作業列を使った方法(VLOOKUP)
作業列に「支店」「営業担当者」「製品名」の3つの条件を&で結合します。

これで、VLOOKUPの検索値も以下のように3つの条件を&で結合したものに修正すればOKです。
数式:=VLOOKUP(I1&I2&I3, A2:E7, 5, FALSE)

INDEX関数とMATCH関数を使った方法
INDEX関数とMATCH関数を組み合わせる場合も、検索値と検索範囲に3つの条件を&で結合します。
このように、条件を増やしても、&でつなぎ合わせることで対応できます。
数式:=INDEX(E2:E7,MATCH(I1&I2&I3,B2:B7&C2:C7&D2:D7,0))
配列数式(Ctrl + Shift + Enter)の処理を忘れないようにしましょう!

どちらの方法を使えばいいの?

2つの方法をご紹介しましたが、それぞれにメリットとデメリットがあります。
作業列を使う方法

INDEXとMATCHを組み合わせる方法


「まずは簡単に試したい」「元のデータが多少変わっても大丈夫」という場合は、方法1の作業列を使う方法がおすすめです。
「元のデータを一切変更したくない」「関数をマスターして、よりスマートに作業したい」という方は、方法2のINDEXとMATCHを組み合わせる方法にぜひ挑戦してみてください。
まとめ:VLOOKUPの応用をマスターして、業務効率をアップさせよう!
今回は、エクセルVLOOKUP関数で複数条件でデータを抽出する2つの方法を解説しました。
- 作業列(VLOOKUP)を使う方法
- INDEX関数とMATCH関数を組み合わせる方法
どちらの方法も、VLOOKUPだけではできないことを可能にしてくれる、とても便利なテクニックです。最初は難しく感じるかもしれませんが、一度覚えてしまえば、今後の業務で役立ちます。ぜひ、今回の記事を参考に、エクセルのスキルをレベルアップさせてくださいね!
コメント