公開日:

ExcelでVLOOKUPを複数条件に対応させる方法|補助列と代替関数

得意先コードだけでは、契約ごとの単価を特定できない。たとえば同じ得意先でも「契約A」と「契約B」で金額が異なるなら、得意先コードと契約コードの2条件で検索する必要があります。

VLOOKUPは検索値を1つ指定する関数ですが、補助列で2項目を組み合わせると、複数条件に対応できます。ここでは数式の作り方と、誤検索を防ぐ確認ポイントを紹介します。

結論:2つのキーを補助列で1つにまとめる

検索対象の表が、次の列で構成されているとします。

列 内容 2行目の例
A 検索用キー(補助列) C01|A
B 得意先コード C01
C 契約コード A
D 月額単価 12000

A2に次の式を入力し、下の行へコピーします。

=B2&"|"&C2

得意先コードと契約コードの間に | を挟むので、キーは C01|A という形になります。次にE2へ探したい得意先コード、F2へ契約コードを入力し、G2で検索します。

=VLOOKUP(E2&"|"&F2,$A$2:$D$7,4,FALSE)

4列目のD列から月額単価が返ります。FALSE は完全一致の指定です。あいまいな一致で別契約を取らないため、ここは省略しないようにします。

得意先だけで検索した場合と2条件で検索した場合の違い
説明用の概念図です。Officeの実画面ではありません。図は左右にスクロールできます。図を原寸で開く

手順1:まずキーになる項目を確認する

同じ得意先コードに契約が複数あるなら、得意先だけでは1行を特定できません。どの組み合わせなら一意になるのかを確認します。

例えば「得意先コード × 契約コード」で1契約が1行に決まるなら、それを複合キーにできます。同じ組み合わせで複数行ある場合、VLOOKUPは最初に見つかった行を返すので、先に重複を解消するか検索設計を見直してください。

確認式の例:

=COUNTIF($A$2:$A$7,A2)

結果が2以上のキーがあれば、同じ複合キーが複数行にあります。

手順2:補助列を左端に作る

VLOOKUPは、指定した検索範囲の左端列で検索します。今回なら検索範囲をA:Dとして、複合キーをA列に置く必要があります。

  1. 元表を別名保存するか、作業用のコピーを作ります。
  2. 得意先コード・契約コードの左側に補助列を用意します。
  3. =B2&"|"&C2 を入力し、必要な行までコピーします。
  4. 連結後のキーが空欄や異常な値になっていないか確認します。

重要: C01|A と C01|B は区別されますが、元のコードに | 自体が含まれると意図しない重複が起こり得ます。区切り文字がコードに存在しないことを確認してください。得意先コードの 0012 のような先頭ゼロが重要な場合は、元データを文字列として扱い、ゼロを消さないようにします。

手順3:完全一致で検索する

E2/F2の入力を変更しながら結果を確認します。見つからないときは #N/A になります。空白の混入、数値と文字列の違い、先頭ゼロ、元表にキーがあるかを調べてください。

表示をわかりやすくするなら次のようにもできます。

=IFNA(VLOOKUP(E2&"|"&F2,$A$2:$D$7,4,FALSE),"該当なし")

ただし「該当なし」と表示されたから元表に本当に契約がないとは限りません。見つからなかった理由を確認することが大切です。VLOOKUPの #N/A 全般の対処はExcelのVLOOKUPで#N/Aが出る原因と直し方でも扱っています。

補助列の作成から照合・重複確認までの手順
説明用の概念図です。Officeの実画面ではありません。図は左右にスクロールできます。図を原寸で開く

補助列を増やしたくない場合

Microsoft 365やExcel 2021以降など、XLOOKUPが使える環境なら、2条件の一致を表す配列を使う方法もあります。例えば元表のB列(得意先)とC列(契約)を検索し、D列を返します。

=XLOOKUP(1,(B2:B7=E2)*(C2:C7=F2),D2:D7,"該当なし")

この式では各条件の一致を1/0で表し、両方が一致する行の1を探します。ただし、使えるExcelのバージョンやデータ件数、配列計算への理解が必要です。Excel 2016・2019ではXLOOKUPを使用できません。複数人で共有するブックは利用環境を確認しましょう。

よくある質問

条件が3つならどうしますか?

補助列で3項目を区切り文字付きで連結し、検索側も同じ順番でつなぎます。どの組み合わせで1行が決まるかを先に確認してください。

同じキーが2行あるときはどうなりますか?

VLOOKUPは最初に一致した行を返します。正しい金額かどうか判別できないため、重複チェックを行うか、条件を追加する必要があります。

INDEXとMATCHでもできますか?

はい。複数条件に対応する組み合わせ式を作れますが、式が複雑になりがちです。担当者が保守できる方法を選びましょう。

まとめ

VLOOKUPで複数条件を扱うなら、一意になる項目を決め、補助列で結合し、完全一致で検索するのが分かりやすい方法です。単に式が動くことではなく、重複やコードの表記がないことを確認してから集計・転記に使ってください。

参考:Microsoft サポート「VLOOKUP 関数」/「XLOOKUP 関数」