関数 EXCEL&VBA

エクセルのVLOOKUP関数で複数条件を指定する方法

エクセルで「VLOOKUP関数」を使ってデータを検索するのは一般的な手法ですが、複数の条件を指定して値を検索したい場面に遭遇したことはありませんか?
たとえば「社員番号」と「部署名」の両方が一致する行から給与を取得したい、といったケースです。

しかし、VLOOKUP関数は本来単一条件でしか検索できないため、複数条件を使うには一工夫が必要です。
本記事では、その具体的な方法と代替手段を解説します。



VLOOKUP関数は複数条件に非対応?

まず基本的な確認ですが、VLOOKUP関数の構文は以下の通りです:

=VLOOKUP(検索値, 範囲, 列番号, 検索の型)

この「検索値」には通常1つのセルしか指定できません。
そのため、「複数の条件で一致する行を検索したい」と思っても、VLOOKUP単体では対応できません。

ではどうするのか?――ここで活躍するのが「複数の条件を結合して1つのキーにする方法」です。

複数条件でのVLOOKUPを可能にする手順

① 補助列を作成する

まず、検索対象のデータ範囲に「補助列」を追加しましょう。
たとえば「社員番号」と「部署名」の両方が一致する行を検索したい場合は、以下のように補助列に2つの値を結合します。

=A2&B2

このように、2つの条件を1つのキーとして結合することで、VLOOKUPでも複数条件検索が可能になります。

② 検索値側でも同様に結合する

次に、検索側(別シートなど)でも同じ形式で条件を結合しておく必要があります。

=VLOOKUP(D2&E2, 範囲, 列番号, FALSE)

ここで D2 が「社員番号」、E2 が「部署名」だとすると、補助列と同じ形式の検索値が作成され、対応する行の給与が取得できます。


▲セルD2とE2に値を入れるとセルG2に検索結果が!

この数式の、Sheet1!C2:D3 とは、元の表の下記赤枠を指します;

INDEX&MATCH関数の併用もおすすめ

「VLOOKUPでは限界がある」「列の順番に縛られるのが不便」という場合には、INDEX関数とMATCH関数を組み合わせた方法が便利です。

構文例:

=INDEX(出力範囲, MATCH(1, (条件1=列1)*(条件2=列2), 0))

この方法では 配列数式(Ctrl + Shift + Enter)や新しいExcel関数(動的配列)が必要になりますが、より柔軟に複数条件を扱うことができます。

例:

=INDEX(C2:C100, MATCH(1, (A2:A100=G2)*(B2:B100=H2), 0))

ここで、

  • G2: 検索する社員番号
  • H2: 検索する部署名
  • C列: 給与列

とすれば、「社員番号と部署名の両方が一致する行の給与」が返されます。

FILTER関数を使ったスマートな方法(Office 365以降)

もしあなたがOffice 365Excel 2021を使っているなら、FILTER関数を使うのがもっとも簡単です。

=FILTER(C2:C100, (A2:A100=G2)*(B2:B100=H2))

複数条件の絞り込みが直感的に行え、関数の構造もシンプル。新しいExcel環境ならこちらの活用がおすすめです。

複数条件VLOOKUPでよくあるエラーと対処法

エラー①:#N/A が出る

  • 検索値と補助列の形式が完全一致していない可能性があります。余計なスペースや全角半角の違いにも注意。

エラー②:範囲がずれている

  • VLOOKUPの検索範囲と補助列の位置関係に誤りがないか確認してください。

まとめ:VLOOKUPでも複数条件は工夫次第で使える!

方法 難易度 柔軟性 おすすめ環境
補助列+VLOOKUP すべてのExcel
INDEX+MATCH Excel中級者以上
FILTER関数 Office 365以降

複数条件での検索は、エクセルの活用レベルを一段引き上げてくれるテクニックです。
あなたの目的にあった方法を選び、より柔軟なデータ検索を実現しましょう!


【補足】関数を応用した業務効率化

複数条件でのデータ抽出は、請求書の明細管理人事評価データの集計など、業務シーンでも非常に役立ちます。
VLOOKUP関数だけでなく、他の関数との組み合わせ最新のExcel機能を積極的に活用することで、作業効率は飛躍的に向上します。

関連記事・広告






-関数, EXCEL&VBA
-,