ExcelのVLOOKUP関数を使用してデータを検索する際に、1つの検索値ではなく2つ以上の条件を組み合わせて検索したい場合があります。本記事では、A2の値に加えてB2の値も条件に加えてデータを抽出する方法を解説します。
VLOOKUP関数の基本と制約
通常、VLOOKUP
関数は1つの検索値しか扱えません。たとえば、以下の関数ではA2の値をキーとして検索しています。
=IFERROR(VLOOKUP(A2,EF!A:C,2,0),"")
しかし、このままではA2の値しか検索条件に含めることができません。B2の値も条件に追加するためには、別の方法を採用する必要があります。
複数条件で検索する方法
① INDEXとMATCHの組み合わせを使う
VLOOKUPは1つの条件しか扱えませんが、INDEX
とMATCH
を組み合わせることで複数条件を満たすデータを検索できます。
次の関数を使用すると、A2とB2の両方に一致するデータを取得できます。
=IFERROR(INDEX(EF!C:C, MATCH(1, (EF!A:A=A2)*(EF!B:B=B2), 0)), "")
この関数の仕組み:
EF!A:A=A2
は、A列でA2に一致する行を探します。EF!B:B=B2
は、B列でB2に一致する行を探します。(EF!A:A=A2)*(EF!B:B=B2)
は、両方の条件を満たす行を見つけます(AND条件)。MATCH(1, …, 0)
は、その条件を満たす最初の行番号を取得します。INDEX(EF!C:C, …)
は、その行のC列の値を返します。
② FILTER関数を使う(Excel 365/2021以降)
Excel 365またはExcel 2021を使用している場合は、FILTER
関数を活用すると、より簡単に複数条件で検索できます。
=IFERROR(FILTER(EF!C:C, (EF!A:A=A2)*(EF!B:B=B2)), "")
この関数の仕組み:
FILTER
関数は、指定された範囲(EF!C:C)の中で、条件に合致するデータを抽出します。(EF!A:A=A2)*(EF!B:B=B2)
は、A列とB列の両方で一致する行を探します。- 一致するデータがない場合、
IFERROR
で空欄(””)を返します。
まとめ
VLOOKUP関数では1つの検索値しか扱えませんが、INDEX
+MATCH
の組み合わせや、FILTER
関数を活用することで複数条件の検索が可能になります。
- Excel 2019以前のバージョンを使用している場合:
INDEX
+MATCH
を使用する。 - Excel 365やExcel 2021を使用している場合:
FILTER
関数を活用する。
これらの方法を使えば、A2とB2の両方に一致するデータを簡単に取得できます。
コメント