公開日:
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 は完全一致の指定です。あいまいな一致で別契約を取らないため、ここは省略しないようにします。
手順1:まずキーになる項目を確認する
同じ得意先コードに契約が複数あるなら、得意先だけでは1行を特定できません。どの組み合わせなら一意になるのかを確認します。
例えば「得意先コード × 契約コード」で1契約が1行に決まるなら、それを複合キーにできます。同じ組み合わせで複数行ある場合、VLOOKUPは最初に見つかった行を返すので、先に重複を解消するか検索設計を見直してください。
確認式の例:
=COUNTIF($A$2:$A$7,A2)
結果が2以上のキーがあれば、同じ複合キーが複数行にあります。
手順2:補助列を左端に作る
VLOOKUPは、指定した検索範囲の左端列で検索します。今回なら検索範囲をA:Dとして、複合キーをA列に置く必要があります。
- 元表を別名保存するか、作業用のコピーを作ります。
- 得意先コード・契約コードの左側に補助列を用意します。
=B2&"|"&C2を入力し、必要な行までコピーします。- 連結後のキーが空欄や異常な値になっていないか確認します。
重要: 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が出る原因と直し方でも扱っています。
補助列を増やしたくない場合
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で複数条件を扱うなら、一意になる項目を決め、補助列で結合し、完全一致で検索するのが分かりやすい方法です。単に式が動くことではなく、重複やコードの表記がないことを確認してから集計・転記に使ってください。
