エクセルで売上一覧、顧客名簿、在庫表などを扱っていると、「東京支店かつ担当者が田中」「商品Aかつ売上が10万円以上」のように、複数の条件に一致するデータだけを抽出したい場面があります。
条件が一つだけならオートフィルターでも対応できますが、抽出結果を別の場所へ自動表示したい場合や、複数列をまたいで条件を判定したい場合は、関数を使う方法が便利です。
Microsoft 365やExcel 2021以降ではFILTER関数を使うと、複数条件に一致する行を数式だけで一覧化できます。
複数条件でデータを抽出するときの基本ポイント
・AND条件は条件式を掛け算でつなぐ
・OR条件は条件式を足し算でつなぐ
・結果を別の場所へ表示するならFILTER関数が便利
この記事では、1行目に見出しがある売上データを例に、エクセルで複数条件のデータを抽出する方法を詳しく解説します。
数式の意味、複数列の一致判定、古いExcelで使える代替方法まで確認していきましょう。
FILTER関数による複数条件抽出
それではまず、複数条件に一致するデータを別の場所へ一覧表示するFILTER関数について解説していきます。
| 日付 | 支店 | 担当者 | 商品 | 売上 |
|---|---|---|---|---|
| 2026/10/1 | 東京 | 田中 | 商品A | 120000 |
| 2026/10/2 | 大阪 | 佐藤 | 商品B | 80000 |
| 2026/10/3 | 東京 | 田中 | 商品C | 150000 |
AND条件の基本数式
FILTER関数では、抽出したい範囲と、残す行を判定する条件範囲を指定します。
たとえばA1からE10に売上表があり、B列の支店が東京、C列の担当者が田中である行を抽出する場合、抽出先のG2セルに数式を入力します。
=FILTER(A2:E10,(B2:B10=”東京”)*(C2:C10=”田中”),”該当データなし”)
この数式では、B列が東京という判定と、C列が田中という判定を掛け算で結合しています。
掛け算記号を使うと、両方の条件を満たす行だけが1となるため、AND条件として機能します。
1行目はヘッダーとして扱うため、抽出範囲も条件範囲も2行目から指定することが大切です。
ヘッダーを含めた表全体を抽出したいときは、抽出先に見出しをコピーしておくか、別途見出し行を用意すると読みやすくなります。
【操作のポイント】FILTER関数の抽出範囲と各条件範囲は、必ず同じ開始行と終了行にそろえます。
抽出先セルとスピル範囲
続いては、FILTER関数の結果が表示される場所とスピル範囲を確認していきます。
FILTER関数は、条件に一致した行数と列数に応じて、入力したセルから自動的に結果を広げます。
この自動展開はスピルと呼ばれ、G2セルに数式を入力すると、G列からK列までの必要な範囲に抽出結果が表示されます。
スピル予定のセルに文字、数式、結合セルなどがあると、結果を表示できずにスピルエラーになることがあります。
抽出先の右側と下側には十分な空白セルを確保することが、FILTER関数を安定して使うコツです。
抽出元のデータが増減しても、指定範囲内であれば計算結果は自動更新されます。
データが頻繁に追加される表では、元の一覧をテーブル化してからFILTER関数を使うと、参照範囲の管理がさらに楽になります。
【操作のポイント】抽出結果の範囲へ直接入力するとスピルが止まるため、結果の周囲は空けておきましょう。
該当なし表示とエラー対策
続いては、条件に一致するデータがない場合の表示方法を確認していきます。
FILTER関数の3番目の引数には、該当データがないときに表示する文字列を設定できます。
先ほどの数式にある「該当データなし」は、この引数に指定したメッセージです。
この引数を省略すると、条件に一致する行がない場合に計算エラーが表示されることがあります。
検索条件をセルに入力する形式なら、たとえばH1に支店名、I1に担当者名を入力し、条件部分をB2:B10=H1、C2:C10=I1のように設定できます。
検索条件をセル参照にすると、数式を書き換えずに条件だけを切り替えられます。
検索条件をセル参照にした数式
=FILTER(A2:E10,(B2:B10=H1)*(C2:C10=I1),”該当データなし”)
【操作のポイント】条件セルに余分な空白があると一致しないため、入力規則のリストを使う方法も有効です。
複数列にまたがる一致判定
続いては、支店、商品、金額など複数列の条件を組み合わせる一致判定について確認していきます。
| 支店 | 商品 | 売上 | 抽出条件 |
|---|---|---|---|
| 東京 | 商品A | 120000 | 東京かつ商品A |
| 東京 | 商品C | 150000 | 東京かつ売上10万円以上 |
文字列と数値の組み合わせ
それではまず、文字列条件と数値条件を同時に指定する方法について解説していきます。
東京支店のデータだけを対象にし、そのうえで売上が100000円以上の行を抽出する場合を考えます。
=FILTER(A2:E10,(B2:B10=”東京”)*(E2:E10>=100000),”該当データなし”)
B列では文字列の完全一致を判定し、E列では100000以上という比較条件を判定しています。
数値の条件ではダブルクォーテーションで数値を囲まず、比較演算子と数値をそのまま記述します。
以上、未満、以下、より大きいといった条件は、それぞれ>=、<、<=、>で指定できます。
売上金額のセルに文字列として保存された数字が混ざっている場合、正しく比較できないことがあるため、数値形式へ統一しておきましょう。
【操作のポイント】金額を条件にする前に、対象列が数値として認識されているか確認します。
日付範囲と期間指定
続いては、日付列を使って特定の期間だけを抽出する方法を確認していきます。
2026年10月1日から10月31日までの東京支店の売上を抽出する場合は、日付の下限と上限を別々の条件として指定します。
=FILTER(A2:E10,(B2:B10=”東京”)*(A2:A10>=DATE(2026,10,1))*(A2:A10<=DATE(2026,10,31)),”該当データなし”)
DATE関数を使うと、パソコンの地域設定や表示形式の影響を受けにくい日付条件になります。
開始日と終了日を条件セルに入力して参照すれば、月別や週別の抽出表として再利用できます。
終了日を含めたい場合は、終了日の条件に<=を使うことを忘れないようにしましょう。
日時まで記録されたデータでは、終了日の翌日より小さいという条件にすると、当日の時刻を含むデータも漏れにくくなります。
【操作のポイント】日付の表示が同じでも内部値が文字列だと条件判定できないため、日付形式を整えてから抽出します。
部分一致とワイルドカード
続いては、商品名や顧客名の一部に含まれる文字を条件にする部分一致を確認していきます。
FILTER関数で部分一致を行うときは、SEARCH関数やCOUNTIF関数を組み合わせます。
=FILTER(A2:E10,ISNUMBER(SEARCH(H1,D2:D10)),”該当データなし”)
この例ではH1セルへ入力した文字が、D列の商品名に含まれている行を抽出します。
SEARCH関数は見つかった位置を数値で返し、見つからない場合はエラーになるため、ISNUMBER関数で判定を整えます。
たとえばH1に「商品」と入力すれば商品A、商品B、商品Cが対象になり、「A」と入力すれば商品Aを含む行だけが残ります。
大文字と小文字を区別したい検索ではSEARCH関数ではなくFIND関数を使いますが、日本語のデータではSEARCH関数で十分なことが多いでしょう。
【操作のポイント】部分一致では検索語が空欄の場合に全件抽出されるため、空欄時の処理も決めておくと安心です。
オートフィルターによる条件抽出
続いては、数式を使わずに表の中から複数条件を絞り込むオートフィルターについて確認していきます。
| 日付 | 支店▼ | 担当者▼ | 売上▼ |
|---|---|---|---|
| 2026/10/1 | 東京 | 田中 | 120000 |
| 2026/10/2 | 大阪 | 佐藤 | 80000 |
フィルターボタンの設定
それではまず、表にフィルターを設定する基本操作について解説していきます。
見出しを含むデータ範囲内のいずれかのセルを選択し、リボンのデータタブからフィルターを選びます。
キーボードではCtrlキーとShiftキーとLキーを同時に押しても、フィルターのオンオフを切り替えられます。
フィルター
➤
選択中の表にフィルターを設定
| A | B | C | D | |
| 1 | 日付 | 支店 ▼ | 担当者 ▼ | 売上 ▼ |
| 2 | 2026/10/1 | 東京 | 田中 | 120000 |
設定後は各見出しセルの右側に下向きの矢印が表示され、列ごとに抽出条件を指定できるようになります。
フィルターは表の中で確認しながら絞り込みたいときに、もっとも手早く使える機能です。
【操作のポイント】空白行や空白列が途中にあると表の範囲が正しく認識されないため、一覧は連続した表に整えます。
複数列の絞り込み条件
続いては、複数の列にフィルター条件を設定する操作について確認していきます。
まず支店列の矢印をクリックし、東京だけにチェックを残してOKを選択します。
次に担当者列の矢印をクリックし、田中だけを選択すると、東京かつ田中の行だけが表示されます。
異なる列に設定したフィルターは自動的にAND条件として扱われます。
売上列の矢印から数値フィルターを選び、指定の値以上を使えば、支店と担当者に加えて金額条件も重ねられます。
日付列では日付フィルターから今月、先月、指定の範囲内などを選択できるため、期間ごとの確認にも役立ちます。
【操作のポイント】列見出しのフィルター記号が変化している列は、何らかの条件で絞り込み中です。
同一列のOR条件
続いては、同じ列で複数の値を残すOR条件について確認していきます。
支店列のフィルターメニューで東京と大阪の両方にチェックを入れると、東京または大阪のデータが表示されます。
この場合、同一列内では選択した値のどれかに一致すればよいため、OR条件になります。
別列同士はAND、同一列で複数の項目を選ぶとORという違いを覚えると、フィルター操作で迷いにくくなります。
条件を解除したい場合は、データタブのクリアを選ぶか、各列のフィルターからフィルターをクリアを選択します。
フィルターの条件関係
支店が東京または大阪 同じ列のOR条件
支店が東京かつ担当者が田中 異なる列のAND条件
【操作のポイント】抽出した行だけをコピーする前に、非表示行を含めない貼り付け結果になっているか確認しましょう。
INDEX関数とMATCH関数の検索抽出
続いては、FILTER関数を使えないExcelでも活用しやすいINDEX関数とMATCH関数による抽出方法を確認していきます。
| 検索項目 | 検索値 | 返す項目 |
|---|---|---|
| 商品コード | A-001 | 商品名と単価 |
| 支店と担当者 | 東京と田中 | 最初に一致した売上 |
複数条件の検索キー
それではまず、複数条件を一つの検索キーとして扱う考え方について解説していきます。
INDEX関数とMATCH関数は、基本的に検索位置を一つ見つけて値を返す組み合わせです。
複数条件で最初に一致したデータを取り出したい場合は、複数の論理式を掛け算して、1になる位置をMATCH関数で探します。
=INDEX(E2:E10,MATCH(1,(B2:B10=H1)*(C2:C10=I1),0))
この例ではH1に支店名、I1に担当者名を入力し、条件に一致する最初の行のE列、つまり売上を返します。
MATCH関数の検索値を1にすることで、すべての条件を満たして1になった行を探せます。
古いExcelではこのような配列計算式を入力したあと、CtrlキーとShiftキーとEnterキーで確定する必要がある場合があります。
【操作のポイント】同じ条件に複数行が一致する場合、INDEXとMATCHで返せるのは最初に見つかった1件です。
返す列の切り替え
続いては、検索条件を変えずに商品名、日付、売上など返す列を切り替える方法を確認していきます。
INDEX関数の最初の引数を変更すると、同じ一致行から別の列の情報を取り出せます。
たとえば商品名を返すならD2:D10、日付を返すならA2:A10をINDEX関数の配列として指定します。
検索する列と返す列が離れていても利用できるため、VLOOKUP関数より柔軟に扱えることがあります。
INDEXとMATCHの組み合わせは、検索列が左端にない表でも対応できる点が大きな利点です。
複数の結果を横方向に並べたい場合は、返す項目ごとにINDEX関数を設定すると、検索用の小さな参照表を作れます。
【操作のポイント】返す列だけを変えるときも、MATCH関数内の各条件範囲は同じ行数に保ちます。
XLOOKUP関数との使い分け
続いては、新しいExcelで使えるXLOOKUP関数との使い分けを確認していきます。
XLOOKUP関数は一つの検索値をもとに値を返す関数ですが、複数条件を掛け算した配列を検索対象にすれば複数条件にも対応できます。
=XLOOKUP(1,(B2:B10=H1)*(C2:C10=I1),E2:E10,”該当データなし”)
数式を短く読みやすくしたい場合はXLOOKUP関数、幅広いExcelのバージョンで使いたい場合はINDEX関数とMATCH関数が候補になります。
ただし、いずれも複数件を一覧で返す用途には向かないため、その場合はFILTER関数または詳細設定フィルターを検討しましょう。
【操作のポイント】一件を検索するのか、複数行を一覧で抽出するのかを先に決めると関数を選びやすくなります。
詳細設定フィルターと抽出先指定
続いては、元データを残したまま別の位置へ条件に一致する行をコピーできる詳細設定フィルターについて確認していきます。
| 条件欄の支店 | 条件欄の担当者 | 判定 |
|---|---|---|
| 東京 | 田中 | 東京かつ田中 |
| 大阪 | 佐藤 | 大阪かつ佐藤 |
条件範囲の作成
それではまず、詳細設定フィルターで使う条件範囲の作成方法について解説していきます。
条件範囲には、元データの見出しと完全に同じ文字列を1行目に入力します。
たとえば支店と担当者を条件にするなら、空いた場所に支店、担当者という見出しを並べ、その下の同じ行に東京、田中と入力します。
同じ行に並べた条件はAND条件として判定され、別の行に並べた条件はOR条件として判定されます。
この仕組みを使うと、東京かつ田中、または大阪かつ佐藤のような複雑な条件も、数式を使わずに指定できます。
【操作のポイント】条件欄の見出しは元データと一字でも異なると正しく認識されないため、コピーして使うと確実です。
指定した場所へのコピー
続いては、抽出結果を別の場所へコピーする設定について確認していきます。
元データ範囲内を選択してデータタブを開き、詳細設定を選びます。
表示された画面で指定した範囲にコピーを選択し、リスト範囲、検索条件範囲、抽出範囲をそれぞれ指定します。
抽出範囲には、抽出結果を始めたい位置の左上セルを指定します。
結果の見出しを限定したい場合は、抽出先に必要な見出しだけをあらかじめ入力しておく方法もあります。
【操作のポイント】抽出先は元データと重ならない空いた場所を指定し、既存の情報を上書きしないよう注意します。
重複レコードの除外
続いては、詳細設定フィルターで重複するデータを除外する方法を確認していきます。
詳細設定の画面には、重複するレコードは無視するという選択肢があります。
この項目を選択すると、同じ内容の行が繰り返される一覧から、重複しないデータだけを抽出できます。
顧客名、商品名、支店名などの候補を重複なしで一覧にしたいときに便利な機能です。
ただし、一部の列だけが同じ行は別レコードとして扱われるため、何を重複とみなすかを確認してから実行しましょう。
【操作のポイント】抽出後に元データが変わっても詳細設定フィルターの結果は自動更新されないため、必要に応じて再実行します。
複数条件抽出のエラー確認
続いては、複数条件の抽出で結果が出ない場合に確認したい原因と対処法について解説していきます。
| 症状 | 主な原因 | 確認内容 |
|---|---|---|
| 該当なし | 空白や表記揺れ | TRIM関数や表示形式 |
| スピルエラー | 抽出先に値がある | 周囲のセル |
条件範囲の行数不一致
それではまず、FILTER関数で起こりやすい条件範囲の行数不一致について解説していきます。
抽出範囲がA2:E10なのに、条件範囲がB2:B9のように異なる行数になっていると、FILTER関数は正しく判定できません。
抽出する配列と、各条件に指定した列範囲は、開始行と終了行をすべて合わせる必要があります。
数式をコピーして編集したときは、1か所だけ参照範囲がずれていないかを確認しましょう。
テーブル形式を使う場合は、構造化参照で同じテーブル列を指定できるため、行数のずれを減らせます。
【操作のポイント】数式バーで各範囲をクリックし、選択色が同じ最終行まで伸びているか確認します。
空白文字と表記揺れ
続いては、一見同じに見える文字列が一致しない原因について確認していきます。
セルの末尾に空白が入っていたり、全角と半角が混在していたりすると、エクセルでは別の文字列として扱われます。
たとえば「東京」と「東京 」は表示上ほとんど区別できませんが、完全一致の条件では別の値です。
TRIM関数で余分な空白を取り除き、必要に応じてASC関数やJIS関数で文字種を整えると、検索精度を上げられます。
=TRIM(B2)
余分な半角空白を除去して、条件判定用の補助列を作る方法
部署名や商品名の入力は、入力規則のリストを使って表記を統一する方法もおすすめです。
【操作のポイント】一致しないときは、LEN関数で文字数を比べると見えない空白を見つけやすくなります。
関数の対応バージョン
続いては、Excelのバージョンによる関数の違いを確認していきます。
FILTER関数はMicrosoft 365とExcel 2021以降で利用できる動的配列関数です。
古いExcelではFILTER関数が使えないため、オートフィルター、詳細設定フィルター、INDEX関数とMATCH関数などで代替します。
ファイルを他の人へ共有する場合は、相手のExcel環境でFILTER関数が使えるか確認しておくとトラブルを防げます。
互換性を重視する帳票では、抽出方法を一つに固定せず、操作手順を添えることも実務的な対策です。
【操作のポイント】数式が#NAME?エラーになる場合は、関数名の入力ミスだけでなくExcelの対応状況も確認します。
まとめ エクセルの複数条件でデータを抽出する方法
エクセルで複数条件に一致するデータを抽出する方法は、目的とExcelのバージョンによって選ぶことが重要です。
Microsoft 365やExcel 2021以降で、結果を自動更新しながら別の場所へ一覧表示したいなら、FILTER関数が最も使いやすい方法です。
AND条件は条件式を掛け算でつなぎ、OR条件は条件式を足し算でつなぐという基本を押さえると、複数列の判定にも対応できます。
表を確認しながらすばやく絞り込むだけならオートフィルター、数式を使わず別の場所へコピーするなら詳細設定フィルターが便利です。
一件だけを検索して別セルへ表示する用途では、INDEX関数とMATCH関数、またはXLOOKUP関数も役立ちます。
抽出結果が出ないときは、条件範囲の行数、余分な空白、日付や数値の形式、Excelの対応バージョンを順番に確認しましょう。
データの目的に合った方法を選び、複数条件の検索や集計を効率よく進めていきましょう。