VLOOKUP関数で「複数条件で検索したいのに、うまくいかない」「条件を2つ指定するとエラーになる」と悩んでいませんか?
実はVLOOKUP関数自体は仕組み上、複数条件の検索に対応していません。
そのため、正しく数式を入力しているつもりでも「できない」と感じるケースが非常に多いです。

この記事では「VLOOKUP関数で複数条件を指定したい」方向けになぜVLOOKUPでは複数条件が使えないのかという理由から、IF関数・INDEX+MATCH・XLOOKUPを使った具体的な解決方法までを、初心者にもわかるように解説します。

「VLOOKUPに無理やりこだわるべきか」「別の関数を使うべきか」も判断できる内容なので、複数条件の検索でつまずいている方は、ぜひ最後まで確認してみてください。

サルでもわかるVLOOKUP関数!初心者向けに使い方を紹介この記事では、Excel初心者の方でもサルでもわかるように、VLOOKUP関数の基本的な使い方を丁寧に解説していきます。これを読めば、表の中から必要なデータを素早く見つける方法がマスターできるはずです。さっそく始めてみましょう!...

VLOOKUP関数で複数条件ができない原因とは?

VLOOKUPで複数条件を指定しようとしてうまくいかない場合、数式の書き方が間違っているのではなく、関数の仕様そのものが原因であることがほとんどです。
まずは「なぜVLOOKUPでは複数条件ができないのか」を理解しておきましょう。

【複数条件】IF、VLOOKUP、INDEX+MATCH関数の組み合わせExcelで複数の条件に合うデータを抽出するなら「&」アンドを使いましょう。多くの方に好まれているIF関数・VLOOKUP関数・INDEX関数とMATCH関数を組み合わせて複数の条件に合うデータを抽出する方法を解説します。...

VLOOKUPは複数条件に対応していない

結論から言うと、VLOOKUP関数は複数条件での検索を想定して作られていません。VLOOKUPは「1つの検索値」をもとに、「決められた表の中から対応する値を返す」
というシンプルな仕組みの関数なのです。

そのため「AかつBの条件に一致するデータを探す」といった検索は、VLOOKUP単体ではできない仕様になっています。

1つの条件しか検索できない仕組み

VLOOKUPの第1引数には、検索値を1つしか指定できません。
また、検索対象となるのは「検索範囲の一番左の列」のみです。

つまりVLOOKUPは、「この値と一致する行を探す」という一次元の検索しかできず、複数の列を同時に判定する仕組みを持っていないのです。

VLOOKUPで別シート参照ができない原因と解決方法|#N/A・範囲ミスも解説VLOOKUP関数で別シートを参照できない原因をわかりやすく解説。 #N/Aエラー、範囲指定ミス、絶対参照の設定など、よくある失敗と正しい対処法を初心者向けにまとめました。...

VLOOKUPで複数条件を使いたくなるよくあるケース

 

実務では「複数条件で検索したい」と思う場面が非常に多くあります。
ここでは、特によくあるケースを見ていきましょう。

商品コード+日付で検索したい場合

例えば、

  • 商品コード
  • 取引日

この2つを条件にして、売上金額を取得したいケースです。

商品コードだけでは同じ商品が複数存在するため、日付も条件に含めないと正しいデータが取れません。

このような場面で、VLOOKUPが使えないと感じる人は非常に多いでしょう。

社員名+部署名で検索したい場合

社員名だけで検索すると、同姓同名の社員がいる場合に正しい結果が返りません。

そのため、

  • 社員名
  • 部署名

を組み合わせて検索したくなりますが、これもVLOOKUP単体では対応できない典型例です。

VLOOKUP関数で別シートを参照しよう!VLOOKUPを使いこなすExcelのVLOOKUP関数で別シートのデータ範囲を参照する方法を図を使ってわかりやすく解説します。実務では、別シートのデータを抽出することが多いので、この機会に覚えておきましょう!...

VLOOKUPで複数条件を擬似的に実現する方法

ここまできてVLOOKUPで複数条件はできないとなったらこの記事を読んでいる方は怒るでしょう(笑)

VLOOKUPでも、工夫次第で「複数条件っぽい検索」を実現できるのでご紹介します。
ただし、これはあくまで擬似的な方法である点は理解しておきましょう。

IF関数を使って条件を1つにまとめる

考え方としては、複数の条件をIF関数で判定し、1つの値に変換するという方法です。例えば、「条件Aかつ条件Bのときだけ検索する」といった形で、検索値を事前に加工します。

ただしこの方法は、
・数式が複雑になりやすい
・メンテナンス性が低い
というデメリットがあります。

結合列(補助列)を作成する方法

実務でよく使われるのが、補助列を使う方法です。

例として、

  • 商品コード
  • 日付

を「商品コード_日付」のように結合した列を作成し、その列を検索キーとしてVLOOKUPを使います。

この方法は、「仕組みが分かりやすい」と「VLOOKUPの制限を回避できる」というメリットがありますが、表の構造を変更する必要がある点には注意が必要です。

ちなみセルを結合する関数でオススメなのはCONCAT関数です。詳しく見たい方は下記のおすすめ記事をご覧ください。

Excelで複数の文字を繋げるならCONCAT関数CONCAT関数は複数のセルに入力されている文字を1つのセルに繋げることが出来ます。関数の組み方もシンプルで使いやすいのでExcel初心者にもオススメ!...
【VLOOKUP】Excelで「一致したら〇」を返す方法は?IF関数とVLOOKUP関数の組み合わせエクセルのIF関数とVLOOKUP関数を組み合わせて「一致したら〇」「一致したら×」を返す方法をご紹介。ExcelのIF関数とVLOOKUP関数を組み合わせることで、データの一致条件に基づいて特定の値を出力することができます。...

INDEX+MATCHで複数条件に対応する方法

VLOOKUPで複数条件が使えない場合、最も汎用性が高く実務でもよく使われる解決策が「INDEX+MATCH」です。

INDEX+MATCHを使うことで、「検索列の位置に制限がない」「複数条件(AND条件)を指定できる」「列構成が変わっても壊れにくい」といったメリットがあります。

ExcelのINDEX+MATCH関数の基礎。わかりやすく解説INDEX(インデックス)とMATCH(マッチ)の基本的な使い方から複数条件を指定する方法まで解説!さっそく見ていきましょう!...

INDEX+MATCHが複数条件に強い理由

INDEX+MATCHでは、「どの行を取得するか(MATCH)」と「どの列の値を返すか(INDEX)」を完全に分離して指定できます。

そのため、MATCH関数の中で複数の条件を同時に判定することが可能です。

VLOOKUPのように「左端の列しか検索できない」といった制限もありません。

配列数式で複数条件を指定する方法

ここでは、次のような表を例にします。

  • A列:商品コード
  • B列:日付
  • C列:売上金額

「商品コードがA001 かつ 日付が2024/1/1 の売上金額」を取得したい場合、数式は下記のようになります。

=INDEX(C:C, MATCH(1, (A:A=”A001″)*(B:B=DATE(2024,1,1)), 0))

この数式の仕組みは次のとおりです。

  • (A:A=”A001″) → 条件に合う行はTRUE
  • (B:B=DATE(2024,1,1)) → 条件に合う行はTRUE
  • TRUE×TRUE = 1
  • MATCH(1, … ,0) → 両方の条件を満たす行番号を取得

※Excelのバージョンによっては、Enterではなく「Ctrl+Shift+Enter」が必要な場合があります。

VLOOKUP関数の応用5選!ExcelスキルをUPする時短ワザExcelのVLOOKUP関数の応用を5選ご紹介します。具体的に部分一致検索・複数の値を取得・別シートからデータを参照・複数条件・#N/Aエラーを非表示にする方法を解説していきます。...

XLOOKUPで複数条件を指定する方法

Microsoft 365 や Excel 2021 以降を使っている場合は、XLOOKUPを使うのが最もシンプルでおすすめです。INDEX+MATCHよりも数式が直感的で、初心者でも理解しやすいのが特徴です。

XLOOKUP関数で複数条件をらくらく指定!具体的な方法はコチラExcelのXLOOKUP関数で、複数条件(検索値が複数該当する場合)の指定方法をご紹介します。結論、検索値が複数該当する場合は「&」で繋げればできます!実際の例をもとに見ていきましょう!...

XLOOKUPで複数条件が簡単にできる理由

XLOOKUPでは、検索範囲に論理式そのものを指定できます。そのため、「この条件かつこの条件」といったAND条件を、数式の中で自然に表現できます。

列番号の指定も不要で、VLOOKUPよりもミスが起きにくい点も大きなメリットです。

VLOOKUP関数で左側を参照したい!そんな方はこちらVLOOKUP関数は便利ですが、左側の値を取得することができないですよね。XLOOKUP関数を使えば、その悩みを解決できます!この記事では、XLOOKUP関数の基本構文と使い方について分かりやすく解説します。...

AND条件で複数条件を指定する例

先ほどと同じ表を使い、「商品コードがA001 かつ 日付が2024/1/1 の売上金額」を取得する例です。

この数式では、

  • (A:A=”A001″)*(B:B=DATE(2024,1,1))
    → 両方の条件を満たす行だけが「1」になる
  • XLOOKUPで「1」を探し、C列の値を返す

という仕組みになっています。

INDEX+MATCHと比べて、数式が短く読みやすいのが特徴です。

VLOOKUP関数で一致しないもの一致するものを抽出VLOOKUP関数で一致するものと一致しないものを区別して抽出する方法をご紹介します。今回は一致するものに「OK」、一致しないものには「NG」で返していきます。...

複数条件ができないときによくあるミス

複数条件の数式は正しく書いているつもりでも、次のようなミスが原因で動かないことがあります。

よくあるミス
  • 条件の列範囲がズレている
  • 数値と文字列が混在している
  • 絶対参照が設定されていない

それぞれ見ていきましょう!

条件の列範囲がズレている

配列を使った数式では、条件に使う列の行数がすべて同じである必要があります。

例えば、「(A2:A100=”A001″)*(B2:B200=DATE(2024,1,1))」のように範囲がズレていると、正しく計算されません。

対処法としては、

  • すべて同じ行範囲にそろえる
  • テーブル化して列指定を使う

のが効果的と言えるでしょう。

数値と文字列が混在している

日付や数値が「数値として入力されている」「文字列として入力されている」状態が混在していると条件判定に失敗します。

特にCSVや外部データを使っている場合は、VALUE関数やDATE関数で形式を統一しましょう。

絶対参照が設定されていない

複数条件の数式をコピーするときに、参照範囲がズレると途中から結果が返らなくなります。必要に応じて絶対参照や固定範囲にすることが重要です。

絶対参照とは?

数式をコピーしても参照するセルや範囲が変わらないように固定する指定方法です。
セル番地に $(ドルマーク) を付けることで、行や列の移動を防げます。
同じ表や範囲を何度も使う数式では、必須の設定です。

IFERROR関数とVLOOKUP関数を組み合わせてエラーを回避!この記事では、IFERROR関数とVLOOKUP関数を組み合わせてエラーを回避する方法を詳しく図を使って解説します。それでは、さっそく学んでいきましょう!...

まとめ|VLOOKUPで複数条件ができない原因と正しい対処法

VLOOKUPで複数条件ができないのは、数式のミスではなく関数の仕様が原因です。無理にVLOOKUPで対応しようとすると、数式が複雑になりエラーや修正の手間が増えてしまいます。

目的に応じて、補助列・INDEX+MATCH・XLOOKUPを使い分けることが、複数条件検索をスムーズに解決する一番の近道です。

最後にこの記事の振り返りを簡単にしていきましょう。

VLOOKUPで複数条件が使えない理由

VLOOKUPは1つの条件・1つの検索列しか扱えない関数です。そのため、「条件を2つ以上同時に判定する」検索には仕組み上対応していません。

どうしてもVLOOKUP関数で複数条件を指定したい場合は範囲内のセルを結合したりIF関数を使用してデータを参照していきましょう!

状況別のおすすめ解決方法

  • 表を大きく変えられる → 補助列+VLOOKUP
  • 柔軟に複数条件を扱いたい → INDEX+MATCH
  • 新しいExcelが使える → XLOOKUP(最も簡単)

無理にVLOOKUPにこだわらないのがポイントですね。

今後はVLOOKUPにこだわらなくてOK

VLOOKUPは今でも便利ですが、複数条件には不向きです。用途に応じて「INDEX+MATCH」や「XLOOKUP」を使い分けることで、エラーや修正の手間を大幅に減らせます。

VLOOKUP関数で重複をチェック!Excelで重複を確認する方法今回はVLOOKUP関数、COUNTIF関数、重複を確認する方法をご紹介します。またUNIQUE関数を使って重複する値をカットして一意の値として表示する方法も解説していきます。...
XLOOKUP関数で条件を2つ3つ指定する方法を解説XLOOKUP関数で条件を2つ、3つ指定する方法をご紹介します。XLOOKUP関数で単一の条件だけでなく、複数の条件を指定してデータを抽出したい場合に役に立ちます。...
XLOOKUP関数とINDEX+MATCH関数の違いを比較!XLOOKUP関数とINDEX+MATCH関数は検索や抽出において便利な関数。今回はXLOOKUP関数、INDEX関数とMATCH関数の違いを比較してみましょう。...