【もう迷わない!】エクセルVLOOKUP関数で複数条件を設定する方法

VLOOKUPを使って「複数の条件を満たすデータを探したい」と思ったときに、どうすればいいか分からず困ってしまうことありませんか?

今回の記事では、簡単に実践できる、VLOOKUP関数を使って複数条件でデータを抽出する方法VLOOKUP以外の関数を使い複数条件でデータを抽出する方法をご紹介します。

VLOOKUP関数ってどんな関数?

VLOOKUP関数の使い方を簡単におさらいしておきましょう。

VLOOKUP関数とは

指定した範囲の左端の列から検索値を探し、見つかった行の指定した列にあるデータを取り出す」関数です。

VLOOKUP関数は、以下の4つの引数(ひきすう)を使って設定します。

=VLOOKUP(検索値, 範囲, 列番号, 検索方法)

  • 検索値:探したいデータ
  • 範囲:検索する表全体
  • 列番号:取得したいデータが範囲の左から何番目にあるか
  • 検索方法:完全一致か近似一致か

VLOOKUP関数は、検索できるのが1つの条件だけ、そして検索する列は必ず表の左端にある必要があります。これがVLOOKUP単体で複数条件に対応できない理由です。

でんちゃん
でんちゃん

VLOOKUP関数についてより理解を深めたい方は以下の記事を参考にしてください。


例題1:2つの条件で検索結果を抽出したい場合

準備:今回の例で使うデータを見てみよう

今回、複数条件でのVLOOKUPを解説するために、以下のデータを使います。

売上表

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


方法1:作業列を追加してVLOOKUPを使う方法

でんちゃん
でんちゃん

この方法は、元の表に作業列と呼ばれる新しい列を追加し、そこに複数の条件を結合したデータを作成することで、VLOOKUPを適用できるようにする方法です。

重要ポイント
  • 指定したい複数の条件を&(アンパサンド)で繋ぐ

ステップ1:作業列を追加する

まず、元のデータの左端に新しい列(たとえばA列)を挿入します。この列に、検索条件となる「支店」と「営業担当者」を結合したデータを作成します。

ステップ1:作業列を追加する

ステップ2:関数を入力する

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

ステップ2:関数を入力する

ステップ3:VLOOKUP関数でデータを抽出する

次に、抽出したい場所にVLOOKUP関数を入力します。検索値には、抽出したい条件を&で結合したものを使います。

これで、複数の条件に一致した売上を抽出することができます!

数式:=VLOOKUP(I1&I2, A2:E7, 5, FALSE)

VLOOKUP関数でデータを抽出した結果

方法2:INDEX関数とMATCH関数を組み合わせる方法(中級者向け)

この方法は、作業列を使わずに、VLOOKUP関数では難しい複数条件での検索を可能にします。少し複雑に感じるかもしれませんが、慣れれば非常に便利です。

INDEX関数とMATCH関数のおさらい

VLOOKUPの使い方については別記事で解説していますが、INDEXとMATCH関数についても簡単に解説しておきます。

  • INDEX関数
    指定した範囲の中から、行番号と列番号を元にデータを抽出する関数です。
  • MATCH関数
    指定した範囲の中で、検索値が何番目にあるかを返す関数です。

この2つを組み合わせることで、「MATCH関数で探したいデータの位置(行番号)を見つけ、INDEX関数でその位置にあるデータを取り出す」という流れで、複数条件での検索を実現します。

ステップ1:検索値と検索範囲を作成する

まず、MATCH関数で使う「検索値」と「検索範囲」を準備します。

  • 検索値
    抽出したい条件を&で結合します。
  • 検索範囲
    条件が入力されている列を&で結合します。
検索値と検索範囲を作成する
VLOOKUP関数を使った表と同じものを使用します。今回はA列(作業列)は使用しません!

ステップ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つの条件を&で結合します。

「支店」「営業担当者」「製品名」の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)の処理を忘れないようにしましょう!

INDEX関数とMATCH関数を使った出力結果

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

でんちゃん
でんちゃん

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

作業列を使う方法

作業列を使う場合のメリット・デメリット

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

INDEXとMATCHを組み合わせる場合のメリット・デメリット
でんちゃん
でんちゃん

「まずは簡単に試したい」「元のデータが多少変わっても大丈夫」という場合は、方法1の作業列を使う方法がおすすめです。

「元のデータを一切変更したくない」「関数をマスターして、よりスマートに作業したい」という方は、方法2のINDEXとMATCHを組み合わせる方法にぜひ挑戦してみてください。


まとめ:VLOOKUPの応用をマスターして、業務効率をアップさせよう!

今回は、エクセルVLOOKUP関数で複数条件でデータを抽出する2つの方法を解説しました。

まとめ
  • 作業列(VLOOKUP)を使う方法
  • INDEX関数とMATCH関数を組み合わせる方法

どちらの方法も、VLOOKUPだけではできないことを可能にしてくれる、とても便利なテクニックです。最初は難しく感じるかもしれませんが、一度覚えてしまえば、今後の業務で役立ちます。ぜひ、今回の記事を参考に、エクセルのスキルをレベルアップさせてくださいね!

この記事を書いた人
でんちゃん

一児の父。人事として6年、採用・教育・労務・人事制度などを経験してきました。これまで200名ほどの方と面接を実施してきたので就職・転職に関するノウハウがあります。またExcelを用いたデータ分析が得意です。
娘が生まれ日々のすさまじい成長を目の当たりにしています。
人事やExcel、子育てに関してのお役立ち情報を伝えるブログを作っていきます!

でんちゃんをフォローする
Excel
シェアする
でんちゃんをフォローする

コメント

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