Vlookup関数の複数条件・重複の対処方法はIndex関数とMatch関数と”&”で解消!

広告

今回はExcelのVlookupを使っているとぶつかる、複数条件、重複の対処方法についてよく使っていた方法をお伝えいたします。

どんなことができるかというと下図のようなことができます。

このブログでできる事の画像

vlookupは一般的には一つの条件でしか設定することができませんが、今回の方法であれば複数条件かつ、重複データも抜き出す事ができます。

それではいきましょう

手順

  1. Index関数で土台を作る
  2. Match関数で列を特定する
  3. &で複数条件を設定する
  4. 配列で確定する

以上4つの手順です。
今回特にポイントなのが手順3と4です。

ちなみにVlookupを使用しない理由は別記事に記載しておりますので、よろしければこちらも御覧ください。

手順1:Index関数で土台を作る

今回、Index関数とMatch関数を使用しますが、初めて使用する方は戸惑うかもしれません。
しかし、Vlookupよりもはるかに便利で且つ、応用が利きますので是非この機会に覚えると良いです。

それでは、Q1:カルロスという名前の女性で読書が好きな人の出身国を抽出する式を例に進めていきます。

これから行う事の画像

Index関数で必要な情報は「配列(表)」「列番号」「行番号」の3つです。
=INDEX(C2:G17,,4)

抽出したい表を選択します。今回の場合はC2:G17を選択します。
列番号は後ほどMatch関数で特定しますので一旦空欄にしておきます。
列番号は今回出身国を求めるので、4列目になります。そのため4を入力しておきます。

Index関数の設定

手順2:Match関数で列を特定する

Index関数の列の部分(先ほど空欄にしたところ)にMatch関数を入れます。
Match関数は「検査値」、「検査範囲」、「照合の種類」の3つの情報が必要になります。
Match(J3,D2:D17,0)

一つ目の条件がカルロスという名前の人なので、検査値にはカルロスを入れます。
次に検査範囲ですが、名前の列になります。名前の列を選択してあげます。
照合の種類には0の完全一致選択します。
※Vlookupと同じような使い方をする場合、完全一致を選択します。
近似値を参照させないためです。

Match関数の設定

手順3:&で複数条件を設定する

検査値と検査範囲をそれぞれ対象する場所を設定してあげることで、複数条件を可能にします。

まず検査値に女性と読書を&でつなげます

検査値に複数条件を設定

次に検査範囲も複数条件に対応した範囲を設定します。

式はこちらです。
=INDEX(C2:G17,MATCH(J3&K3&L3,D2:D17&E2:E17&G2:G17,0),4)

これでMatch関数の設定は終了です。

手順4:配列で確定する

最後は確定して終わりですが、ただの確定ではありません。
配列にして確定する必要があります。

Ctrl + Shift + Enterキーを押して確定します。
するとカルロスという名前かつ女性で読書が趣味の女性の出身国はアメリカをという回答を抽出することができます。

結果画像

ちなみにただのEnterキーだと、下図のようにValueエラーになります。

配列失敗画像

動画

まとめ

いかがでしたでしょうか。
データがない場合#N/Aエラー処理を今回入れていませんが、もしエラー処理を入れる場合はIFERROR関数は使用しないようにしましょう。
理由は手順4の配列にする設定で失敗した場合#VALUEエラーが出るのですが、これがエラー処理のせいでエラーになりません。
必ずIFNA関数を使うようにしましょう。


コメント