
「この資料、部署と名前の両方で検索して作ってくれる?」——先輩からそう頼まれて、「VLOOKUPなら余裕です!」と答えた直後に気づく。VLOOKUPは条件を1つしか指定できないということに。
かつてはここから補助列や配列数式との格闘が始まり、気づけば残業…というのがお決まりのパターンでした。しかし今のExcelは大きく進化しています。XLOOKUP関数やFILTER関数、スピル(動的配列)の登場により、複数条件の検索は驚くほどシンプルに書けるようになりました。
この記事では、最新のExcel(Microsoft 365 / Excel 2021以降)で使えるモダンな方法を中心に、旧バージョンしか使えない環境向けの従来テクニックまで、レベル別に完全解説します。
まず結論:あなたの環境に合わせて選ぼう
| 環境 | おすすめの方法 |
|---|---|
| Microsoft 365 / Excel 2021以降 | XLOOKUP(基本これ一択)、複数該当は FILTER |
| Excel 2019以前 | 補助列+VLOOKUP、または INDEX & MATCH |
| 数値の合計・取得だけでよい | SUMIFS(全バージョン対応) |
それでは順番に見ていきましょう。
1. 【最新・推奨】XLOOKUPで複数条件検索を実現する
XLOOKUPは、VLOOKUPの後継として登場した関数です。「左側の列も検索できる」「列番号を数えなくていい」「見つからない場合の表示を指定できる」など利点は多数ありますが、複数条件検索においても本領を発揮します。
方法A:条件を「&」で結合する(一番わかりやすい)
例:部署が「営業」かつ名前が「田中」の人の給与を求める
データ構造:
| A列:部署 | B列:名前 | C列:給与 |
|---|---|---|
| 営業 | 田中 | 350,000 |
| 経理 | 田中 | 320,000 |
| 営業 | 佐藤 | 380,000 |
数式:
=XLOOKUP("営業"&"田中", A:A&B:B, C:C, "該当なし")
ポイント:
"営業"&"田中":検索値を結合して1つにします(セル参照ならE1&F1)。A:A&B:B:検索範囲も同じように結合します。補助列は不要です。VLOOKUP時代に必要だった「A列とB列をつなげた作業列」を、数式の中で仮想的に作っているイメージです。- 第4引数
"該当なし":見つからなかったときの表示を指定できます。IFERRORで包む必要がありません。
方法B:条件式の掛け算で検索する(結合の落とし穴を回避)
実は方法Aには小さな落とし穴があります。例えば「営業1」&「田中」と「営業」&「1田中」がどちらも「営業1田中」になり、誤一致する可能性がゼロではありません。厳密にやるなら、条件式をTRUE/FALSEの掛け算で表現する方法が安全です。
=XLOOKUP(1, (A:A="営業")*(B:B="田中"), C:C, "該当なし")
仕組み:
(A:A="営業")はTRUE/FALSEの配列を返し、掛け算すると 両方TRUEの行だけが1 になります。- その「1」をXLOOKUPで探す、という発想です。
- 条件は
*でいくつでも追加できます:(A:A="営業")*(B:B="田中")*(C:C>=300000)のように3条件以上もOK。
補足: Microsoft 365 / Excel 2021では、こうした配列を扱う数式も Enterキーだけで確定できます。昔のように Ctrl + Shift + Enter で配列数式にする必要はありません。
2. 【最新】FILTER関数で「該当するデータを全部」取り出す
VLOOKUPやXLOOKUPは「最初に一致した1件」しか返せません。しかし実務では「条件に合うデータを全部並べたい」ことも多いはず。そこで使うのがFILTER関数です。
例:伝票番号「A001」の明細をすべて表示する
| A列:伝票番号 | B列:商品名 | C列:数量 | D列:金額 |
|---|---|---|---|
| A001 | 商品A | 5 | 500 |
| A001 | 商品B | 3 | 300 |
| A002 | 商品C | 8 | 800 |
=FILTER(B2:D100, (A2:A100="A001"), "該当なし")
複数条件なら掛け算でつなぎます:
=FILTER(D2:D100, (A2:A100="A001")*(B2:B100="商品A"), "該当なし")
結果はスピルして、1つの数式から複数行が自動で展開されます。流通業の「特定伝票の明細一覧」「特定商品の売上履歴の抽出」のような用途には、XLOOKUPよりFILTERのほうが適しています。
3. 【全バージョン対応】SUMIFSで複数条件の数値を取得する
検索したい結果が数値(数量・金額など)で、条件に該当する行が1件(または合計してよい)なら、SUMIFSが最も手軽です。Excel 2007以降ならどのバージョンでも使えます。
例:伝票番号「A001」かつ「商品A」の数量を求める
=SUMIFS(C:C, A:A, "A001", B:B, "商品A")
ポイント:
C:C:取り出したい(合計したい)範囲A:A, "A001":1つ目の条件B:B, "商品A":2つ目の条件- 条件はペアで何組でも追加できます。
応用: 条件をセル参照にすれば、検索フォームのように使えます。
=SUMIFS(C:C, A:A, E1, B:B, F1)
E1に伝票番号、F1に商品名を入力するだけで結果が切り替わります。
注意: SUMIFSはあくまで「合計」なので、文字列は取得できません。また該当行が複数あると合算された値が返る点にも注意してください(明細を見たい場合は前述のFILTERを使いましょう)。
4. 【旧バージョン向け】補助列+VLOOKUPで疑似的に実現する
Excel 2019以前でXLOOKUPが使えない場合の、昔ながらの定番テクニックです。仕組みが目に見えるので、初心者にもおすすめです。
手順:
- 補助列を作る:C列に
=A2&B2と入力し、部署と名前を結合した列を用意します(例:「営業田中」)。 - 補助列を検索する:
=VLOOKUP("営業"&"田中", C:D, 2, FALSE)
VLOOKUPは検索列が範囲の左端にある必要があるため、補助列はデータの左側に作るか、結合列を範囲の先頭にして指定します。
ヒント: 結合時に区切り文字を入れる(
=A2&"_"&B2)と、前述の誤一致問題を防げます。
5. 【旧バージョン向け・中級】CHOOSEで補助列なしのVLOOKUP
補助列を作りたくない場合は、CHOOSE関数で仮想的な2列テーブルを作る方法があります。
=VLOOKUP("営業"&"田中", CHOOSE({1,2}, A2:A100&B2:B100, C2:C100), 2, FALSE)
CHOOSE({1,2}, 結合キー, 結果列)で「1列目=検索キー、2列目=結果」の仮想テーブルを作ります。- Excel 2019以前では Ctrl + Shift + Enter で配列数式として確定する必要があります(Microsoft 365ならEnterのみでOK)。
- 列全体(A:A)ではなく
A2:A100のように範囲を絞ると、動作が軽くなります。
6. 【旧バージョン向け・上級】INDEX & MATCHで柔軟に検索
文字列も返せて、検索列の位置に縛られない万能パターンです。
例:伝票番号「A002」かつ「商品C」の金額を取得する
=INDEX(D:D, MATCH(1, (A:A="A002")*(B:B="商品C"), 0))
仕組み:
(A:A="A002")*(B:B="商品C"):両方の条件を満たす行だけが1になる配列を作る。MATCH(1, …, 0):その「1」が何行目かを特定する。INDEX(D:D, 行番号):D列からその行の値を取り出す。
バージョンによる違い: Excel 2019以前ではCtrl + Shift + Enterが必要です。Microsoft 365 / Excel 2021以降ならEnterだけで動きますが、その環境ならそもそもXLOOKUPを使うほうがシンプルです。
7. 流通業務での実践ポイント
伝票番号を軸にした検索が多い流通業では、次の使い分けが効率的です。
- 伝票番号1つで金額を引く → XLOOKUP(旧環境ならVLOOKUP)
- 伝票番号+商品名で数量・金額を引く → SUMIFS(数値)またはXLOOKUPの複数条件
- 伝票の明細を一覧で出す → FILTER
- 定期的な集計・分析 → ピボットテーブル(数式を書かずに複数条件集計が可能)
さらに一歩進めるなら、データ範囲をテーブル(Ctrl + T)にしておくのがおすすめです。数式が テーブル1[金額] のような読みやすい形になり、データ追加時も範囲が自動で拡張されます。
まとめ
- Microsoft 365 / Excel 2021以降なら、複数条件検索はXLOOKUPが第一候補。
&での結合か、(条件1)*(条件2)の掛け算で実現できます。 - 複数件まとめて取り出すならFILTER。 スピルにより1つの数式で明細一覧が作れます。
- 数値だけならSUMIFSが最速。 全バージョンで使え、セル参照で動的な検索フォームも作れます。
- 旧バージョン環境では、補助列+VLOOKUP、CHOOSE、INDEX & MATCHといった従来テクニックが今も現役です。
「VLOOKUPを制する者は残業を制す」と言われた時代から、Excelは確実に進化しています。新しい関数を味方につけて、複数条件の検索をサクッと片付け、定時で帰りましょう!












コメント