以前に「Excel XLOOKUP関数で複数条件を指定する」記事で、XLOOKUP関数で複数条件を指定してデータを取得する方法についてご紹介しました。
順番が逆になりましたが、古くからある VLOOKUP関数においても、複数条件を指定してデータを取得することができます。

上記記事と対比できるように、下図のような表データから条件に合ったデータを取得してみます。

 

クラス、No.、氏名で構成され、1クラスは 20名で構成されています。

(1) AND条件

VLOOKUP関数では、第1引数である検索値(検索キー)を、参照する表データ範囲の一番左側の列について縦方向に順番に検索していきます。
今回のように検索値が「クラス」と「No.」というように 2つある場合は、これらを結合して 1つの検索値とする必要があります。
そのため、「クラス」列の左側に新しい列を追加し、「クラス」と「No.」のデータを「&」で繋げたものを作ります。(下図)

 

例えば、A2セルは「=B2&C2」とし、以下最終行までコピーします。
検索条件を、例えば F2、G2セルに入力すると、次のようにして検索できます:
  =VLOOKUP(F2&G2,A2:D61,4,FALSE)
(下図)

 

検索値が 3つ以上あっても同様の方法で VLOOKUP検索ができます。

また、検索値を結合したデータ列を、元の表の左側に設けましたが、例えば「名前」列の左側に設けてもよろしいです。
取り出したいデータ列、ここでは「名前」列より左側にあればよろしいです。

もし、このような作業列を使いたくないときは、次のようにしても検索できます:
  =VLOOKUP(TRUE,HSTACK((B2:B61=F2)*(C2:C61=G2)>0,D2:D61),2,FALSE)

この数式の「(B2:B61=F2)*(C2:C61=G2)>0」の部分で、表データの「クラス」列と「No.」列の両方が条件を満たす行を TRUE、満たさない行を FALSE とする配列を生成しています。
そして、HSTACK関数によりこの配列と「名前」列「D2:D61」とを繋いだ 2列の表を生成しています。
出来上がった表に対して VLOOKUP関数で検索するわけです。

ただし、HSTACK関数は Microsoft365で利用可能な関数ですので、HSTACK関数が使える環境であれば XLOOKUP関数を使ったほうがより簡単にできます。

(2) OR条件

複数の条件のうち、いずれかを満たすものを検索します。
これをするため、上記 HSTACK関数を使った方法をアレンジします。

最初の図の表データでやってみますと、次のような数式で検索できます:
  =VLOOKUP(TRUE,HSTACK((A2:A61=E2)+(B2:B61=F2)>0,C2:C61),2,FALSE)
(下図)

 

先ほどの配列を作る部分が「(A2:A61=E2)+(B2:B61=F2)」というように「+」で表わされています。
これで OR条件を表現しています。

その配列について、上から順番に評価していきますので、いずれかの条件を満たすデータがあれば、対応する「名前」を取得し、そこで検索は終わります。
つまり、いずれかの条件を満たすデータが他にあっても、最初に見つかった時点でそれ以上の検索はしません。

このことは、(1)項においても同様です。

以上、VLOOKUP関数において複数の条件で検索する方法をご紹介しましたが、これ以外にも方法がないわけではありません。
例えば、VLOOKUP関数を使わずに、次のように INDEX関数と MATCH関数を使うこともできます:
  =INDEX(C2:C61,MATCH(1,(A2:A61=E2)*(B2:B61=F2),0))
この数式の「*」を「+」に置き換えれば OR条件検索することができます。