フィルターで複数条件を設定するとき、FILTER関数・オートフィルター・高度なフィルターの3手法から最適なものを選ぶと、データ抽出の精度が格段に上がります。本記事では各手法の使い分けと具体的な手順を解説します。

目次

この記事でわかること

FILTER関数のAND/OR条件を「*」と「+」の2記号だけで書けるようになる。高度なフィルターの条件表を5分で正しく作れるようになる。2問の診断で自分に合った手法を即決できる。

この記事の結論

フィルターの複数条件設定は、FILTER関数・オートフィルター・高度なフィルターの3手法で対応できます。FILTER関数ではAND条件を「*」、OR条件を「+」で表し、動的に結果を更新できます。どの手法を使うかは「結果を自動更新したいか」「条件が3つ以上あるか」の2点で判断すると、作業効率が大きく変わります。

今日やるべき1つ

自分の実務データ(請求管理や案件一覧など)を開き、FILTER関数の基本構文「=FILTER(配列, 条件, “”)」を1つ入力してください(所要時間:5分)。

状況別ショートカット

状況読むべきセクション所要時間
FILTER関数のAND/ORを今すぐ使いたいFILTER関数は3手法で複数条件を表す5分
高度なフィルターの設定手順を知りたい高度なフィルターは条件表の配置で決まる7分
手法を迷っていてどれを使うか決めたいフィルター手法は2問で選べる3分
エラー・空欄処理など実務トラブルを解決したいフィルター複数条件は5つの仕組みで実務対応10分
ExcelとGoogleスプレッドシートの違いを知りたいスプレッドシートFILTERは書き方ほぼ同一4分

FILTER関数は3手法で複数条件を表す

まず関数レベルで仕組みを理解すると、以降の設定ミスが大幅に減ります。

FILTER関数の基本構文は配列と条件の組み合わせ

FILTER関数の基本構文は =FILTER(配列, 条件, [空の場合]) です(Microsoftサポート)。第1引数の「配列」には抽出対象の表範囲(例:A2:D100)を指定し、第2引数の「条件」にはTRUE/FALSEを返す式を指定します。第3引数の「空の場合」は条件に合うデータが存在しないときの表示内容で、“” とすると空欄になります。条件が正しく機能しているかどうかは「第2引数がTRUE/FALSEの配列を返しているか」だけを確認すれば判断できます。

AND条件は「*」でつなぐ

複数条件をすべて満たすAND条件は、各条件式を *(アスタリスク)でつないで表します。「B列が”済”かつC列が100以上」という条件は (B2:B100=”済”)*(C2:C100>=100) と書きます。掛け算の性質から、いずれか1つでもFALSE(0)があると全体が0(FALSE)になるため、これがANDとして機能します。フリーランスの売掛金管理をExcelで自動化する場合、「請求状態が”送付済み”かつ入金額が10万円以上」のデータだけを取り出したい場面でこの書き方が役立ちます(マネーフォワードBiz)。条件を3つ以上に増やしたいときは (条件1)*(条件2)*(条件3) と続けて掛け算するだけです。

OR条件は「+」でつなぐ

いずれか1つを満たすOR条件は、各条件式を +(プラス)でつないで表します。「B列が”A社”またはB列が”B社”」という条件は (B2:B100=”A社”)+(B2:B100=”B社”) と書きます。足し算の性質から、いずれか1つでもTRUE(1)があれば全体が1以上(TRUE)になるため、ORとして機能します。ただし注意が必要なのは、すべての条件が同時にTRUEになると2以上の数値が返る点です。FILTER関数はTRUE(0以外)を抽出対象とみなすため動作上は問題ありませんが、後段の計算で使う場合は (条件1+条件2)>0 と明示的に書くと安全です。

AND条件とOR条件を組み合わせる

ANDとORを混在させる場合は、括弧で優先順位を明示します。「A列が”フリーランス”で、かつB列が”未入金”またはC列が30日以上経過」という条件は (A2:A100=”フリーランス”)*((B2:B100=”未入金”)+(C2:C100>=30)) と書きます。外側の * がAND、内側の + がORを担います。COUNTIFで複数条件を扱う場合も同様のAND/ORロジックが活用できるため、FILTER関数と組み合わせて覚えておくと応用範囲が広がります。

CHECK

▶ 今すぐやること:自分の請求書データで「=FILTER(A2:D50,(B2:B50=”未入金”)*(C2:C50>=30000),”該当なし”)」を入力して動作確認する(5分)

Q:FILTER関数はExcelのどのバージョンから使えますか?

A:Excel 2021以降とMicrosoft 365サブスクリプション版)で使用できます。Excel 2019以前では使えないため、後述する高度なフィルターで代替してください。

Q:条件式にエラーが出て結果が返りません。どこを確認すればいいですか?

A:第2引数の条件式を単独でセルに入力し、TRUEまたはFALSEの配列が返るか確認してください。エラーが返る場合は、参照範囲の行数が配列(第1引数)と一致しているか見直してください。

高度なフィルターは条件表の配置で決まる

高度なフィルター(詳細設定)はExcelの全バージョンで使えるため、FILTER関数が使えない環境でも複雑な条件を扱える唯一の標準機能です。規則は2つだけです。

条件表の見出しはデータ列名と完全一致させる

高度なフィルターでは、シート上に「条件範囲」と呼ぶ表を別途作成します。条件範囲の1行目(見出し行)は、フィルター対象のデータ列名と完全一致させることが最重要です。スペースや全角/半角の違いでも認識されないため、データ列の見出しセルをコピーして貼り付けるのが確実です(Indeed Japanキャリアアドバイス)。見出しを手打ちすることは避けてください。

AND条件は同じ行、OR条件は別の行に入力する

条件表の2行目以降に条件値を入力します。同じ行に複数の条件を並べるとAND(すべて満たす)、別の行に書くとOR(いずれかを満たす)として機能します。「B列が”済”かつC列が10万円以上」という条件はB列と同じ行のC列セルに値を書きます。「B列が”A社”またはB列が”B社”」という条件は、A社を2行目、B社を3行目に分けて書きます。この配置ルールさえ守れば、条件の数に制限なく組み合わせを増やせます。

操作手順は「データ」タブから3ステップ

Excelで高度なフィルターを実行する手順は次のとおりです。まずデータ列と条件範囲をシート上に準備します。次に「データ」タブの「詳細設定」ボタンをクリックします。開いたダイアログで「リスト範囲」にデータ全体、「条件範囲」に作成した条件表を指定してOKを押すと、抽出結果が表示されます。「別の場所にコピー」を選択すると抽出結果を別セルに出力できます。条件を変えるたびに再実行が必要になる点がFILTER関数との最大の違いです。定期的に同じ条件で抽出する定型作業には高度なフィルターが向き、リアルタイムで条件を変えて確認する用途にはFILTER関数が向いています。ExcelのPDF変換と同様に、操作手順を一度マスターしてしまえば繰り返し作業が大幅に効率化されます。

CHECK

▶ 今すぐやること:Excelの空シートに3行の条件表(見出し+条件2行)を作り、「データ」→「詳細設定」から動作を確認する(7分)

Q:高度なフィルターで「条件範囲が不正です」というエラーが出ます。

A:条件範囲の見出し行がデータ列名と完全一致しているか確認してください。全角スペースの混入が原因のケースが多く、見出しセルをコピー貼り付けすることで解消できます。

Q:高度なフィルターの結果を別シートに出力できますか?

A:別シートへの直接出力は標準では非対応です。同一シート上の別セル範囲に出力してから、必要に応じてコピーする手順が現実的です。

フィルター手法は2問で選べる

FILTER関数・オートフィルター・高度なフィルターのどれを使うかは、判断軸を明確にすれば2問で決まります。

Q1:抽出結果をリアルタイムで自動更新したいですか?

Yesの場合 → Result A(FILTER関数を使う)。NoまたはどちらでもよいはExcel 2021/M365を使っているかどうかでさらに分岐します。

Q2(Q1がNoの場合):Excel 2021/Microsoft 365を使っていますか?

Yesの場合 → Result B(FILTER関数も高度なフィルターも使える。条件が3つ以上複雑ならFILTER関数推奨)。Noの場合 → Result C(高度なフィルター一択)。

Result A:FILTER関数を使う

条件を変えるたびに関数が自動で再計算されるため、売上ダッシュボードや日々更新する案件リストに最適です。AND条件は「*」、OR条件は「+」で表します。

Result B:FILTER関数か高度なフィルターを状況で使い分ける

定型作業(月末の請求確認など)には高度なフィルター、条件を頻繁に変えるアドホック分析にはFILTER関数が効率的です。長期的な管理コストを下げるならFILTER関数に統一する方針が有効です。

Result C:高度なフィルター一択

条件表の見出し一致と「同行=AND・別行=OR」の規則を守れば、複雑な条件も対応できます。

CHECK

▶ 今すぐやること:Q1とQ2に答えて自分の手法を決定し、該当セクションの手順を実行する(3分)

Q:オートフィルター(通常のフィルター)は複数条件に向きませんか?

A:オートフィルターは列ごとに条件を設定する形式で、複数列にまたがるAND条件には対応しています。ただし同一列にOR条件を3つ以上設定したり、複雑な数値比較を組み合わせたりする場面ではFILTER関数か高度なフィルターを使ってください。

Q:FILTER関数と高度なフィルターを併用することはありますか?

A:あります。高度なフィルターで一度絞り込んだ結果をFILTER関数でさらに整形する使い方も実務では有効です。ただし管理の複雑さが増すため、最初はどちらか1つに絞って習得することを勧めます。

フィルター複数条件は5つの仕組みで実務対応

ここでは実務視点のノウハウに絞って解説します。「条件を増やすと管理が大変」という状況に特に参考になります。

実践術その1:空欄処理を先に設定してエラーゼロを維持

【対象】:FILTER関数を導入したが、条件に合うデータがないときに「#CALC!」エラーが出て困っているフリーランス。

【手順】

第1ステップとして、FILTER関数の第3引数に “該当なし” を設定します(例:=FILTER(A2:D100,(B2:B100=”未入金”)*(C2:C100>=30000),”該当なし”))。所要時間は1分です。第2ステップとして、運用後に条件を変えるたびに第3引数が消えていないか確認します。第3ステップとして、抽出結果がゼロ件のときに隣接セルに「条件を確認してください」と表示するIF文を追加すると、共有ファイルでも混乱が起きません。

【ポイントと理由】:「エラーが出ない設計を最初に作る」方が運用コストを抑えられます。FILTER関数は第3引数を省略すると条件一致ゼロ件で必ずエラーになります。第3引数を設定することで関数の完成度を維持したまま運用でき、ファイルの信頼性が上がり他者への共有もしやすくなります。

【注意点】:第3引数に配列を指定すると予期しない表示崩れが起きることがあります。文字列か0などの単純な値に留めてください。

実践術その2:条件が4つ以上なら補助列で式を分割

【対象】:FILTER関数の条件が増えて数式が1行に収まらず、修正のたびに混乱しているフリーランス。

【手順】

第1ステップとして、元データの右側に補助列を追加し、各条件をそれぞれ別列にTRUE/FALSEで出力する式を入力します(所要時間:5分)。たとえばE列に =(B2=”未入金”) 、F列に =(C2>=30000) と入力します。第2ステップとして、FILTER関数の第2引数を (E2:E100)*(F2:F100) のようにシンプルに書き換えます。第3ステップとして、条件を変えたいときは補助列の式だけを直す運用にします。

【ポイントと理由】:補助列で条件を分解すると、どの条件が機能しているかをセル単位で目視確認できます。条件が1つ変わっても影響範囲が補助列1列に限定されるため、修正コストが大幅に下がります。Excelが重くなる原因の1つが複雑な数式の自動計算である点からも、補助列で式を分割しておくと処理速度の改善にもつながります。

【注意点】:補助列を追加する前に、列を挿入する位置がグラフや他の数式の参照範囲に影響しないか確認してください。既存の参照がずれると別のエラーを引き起こします。

実践術その3:文字列の部分一致はワイルドカードではなくCOUNTIFで対応

【対象】:FILTER関数で「”A社*”のような部分一致を使いたいが、うまく機能しない」と感じているフリーランス。

【手順】

第1ステップとして、FILTER関数の条件式に直接ワイルドカード(*や?)を使うと機能しないことを確認します(所要時間:2分)。第2ステップとして、代わりに COUNTIF(B2,”*A社*”)>0 を条件として使います(例:=FILTER(A2:D100,COUNTIF(B2:B100,”*A社*”)>0,”該当なし”))。第3ステップとして、この書き方が正しく動作することを確認したら、部分一致条件を含む式のテンプレートとして保存しておきます。

【ポイントと理由】:FILTER関数の条件はTRUE/FALSEを返す式のみ受け付けるため、文字列パターンマッチはCOUNTIFなどの関数を経由する必要があります。COUNTIFで複数条件を扱う方法を理解しておくと、FILTER関数との組み合わせでさらに柔軟な抽出が実現できます。フリーランスの案件名や会社名の部分一致抽出が一気に実現できます。

【注意点】:COUNTIF方式はデータが1万行を超えると処理が重くなることがあります。大量データの場合は補助列にあらかじめCOUNTIFの結果を計算しておく設計にしてください。

実践術その4:高度なフィルターの条件表はデータと別シートに置かない

【対象】:高度なフィルターを使っているが、条件を変えるたびにシートを行き来して作業が非効率になっているフリーランス。

【手順】

第1ステップとして、条件表をデータと同一シートの右側の空き領域(例:G1:H5付近)に作成します(所要時間:3分)。第2ステップとして、条件表のすぐ上に「条件エリア」というラベルをつけ、視覚的に区別します。第3ステップとして、高度なフィルターのダイアログを開くたびに条件範囲を再選択する手間を省くため、条件範囲にExcelの「名前の定義」を設定し「Filter_条件」などの名前をつけておきます。

【ポイントと理由】:高度なフィルターは別シートの条件範囲を参照するとエラーになるExcelの制約があります。同一シートに条件表を置くことで、条件変更から再実行までの操作が画面スクロールだけで完結します。

【注意点】:条件表をデータ表の左側や直上に置くと、高度なフィルターがデータ範囲と混同してエラーになることがあります。必ずデータの右側か下側に配置してください。

実践術その5:フリーランスの請求管理はFILTER関数で「入金待ちダッシュボード」を作る

【対象】:請求書の入金状況を手動で確認していて、見落としが発生しているフリーランス。

【手順】

第1ステップとして、請求データシートに「請求先」「請求日」「請求額」「入金状態」「入金予定日」の5列を用意します(所要時間:10分)。第2ステップとして、別シートの「ダッシュボード」シートに =FILTER(請求データ!A2:E100,(請求データ!D2:D100=”未入金”)*(請求データ!E2:E100<=TODAY()+7),”入金待ちなし”) を入力します。これで「未入金かつ入金予定日が7日以内」の請求のみが自動表示されます。第3ステップとして、ダッシュボードシートをExcelを開くたびに最初に確認する習慣をつけます。

【ポイントと理由】:フィルターを都度かける運用より、結果が常時表示されているダッシュボード形式の方が見落としがゼロに近づきます。売掛金管理をExcelの5つの関数で自動化することとFILTER関数を組み合わせると、未入金の見落としをほぼゼロにできます。FILTER関数は元データを変更するたびに自動で再計算されるため、1度設定すれば毎回操作は不要です。

【注意点】:FILTER関数の結果が表示されるセルの右側・下側には他のデータを置かないようにしてください。結果の行数が増えるとスピルエラー(#SPILL!)が発生します。また、入金状態の列を「済み」「未入金」で統一してください。表記揺れがあると条件が機能しません。

CHECK

▶ 今すぐやること:実践術その5の手順を自分の請求データに適用し、未入金7日以内の案件がダッシュボードに表示されることを確認する(15分)

Q:FILTER関数の結果はピボットテーブルと組み合わせられますか?

A:直接の組み合わせは非推奨です。FILTER関数の結果をテーブルに変換してからピボットテーブルの参照範囲にすることはできますが、スピル範囲が変動するたびに参照がずれます。集計が目的の場合はSUMIFSやCOUNTIFSの方が適しています。

Q:スピルエラー(#SPILL!)が出たときはどう対処しますか?

A:FILTER関数の結果が展開されるセル範囲に他のデータが存在するときに発生します。結果の出力先の右・下方向のセルをすべて空白にすることで解消できます。

スプレッドシートFILTERは書き方ほぼ同一

ExcelとGoogleスプレッドシートでFILTER関数の基本的な考え方はほぼ同一です。

基本構文の差は第3引数の扱いのみ

GoogleスプレッドシートのFILTER関数は =FILTER(範囲, 条件1, [条件2], …) という構文で、条件を第3引数以降にカンマ区切りで追加できます。Excel版との違いは2点です。まず、Googleスプレッドシートでは条件をカンマで追加するとANDとして扱われます。次に、条件に合うデータがない場合のデフォルト表示指定がないため、0件のときはエラーになります。エラーを避けるにはIFERROR関数で囲む形式(=IFERROR(FILTER(…),”該当なし”))が標準的です。Googleスプレッドシートの便利機能を組み合わせることで、FILTER関数をさらに活用しやすい環境が整います。

AND条件とOR条件の書き方の違い

GoogleスプレッドシートではAND条件を「条件をカンマで追加する形式」と「でつなぐ形式」の両方で書けます。どちらも動作しますが、形式の方がExcelとの互換性を保てます。OR条件は両方とも「+」形式を使います。Excelで覚えた「*がAND、+がOR」の知識はGoogleスプレッドシートでもそのまま活用できます。

QUERY関数はFILTER関数の上位互換ではない

Googleスプレッドシート固有のQUERY関数はSQL風の文字列で条件を書けるため、複雑な条件を直感的に書けます。ただしデータ型の自動変換が起きることがあり、日付や数値が文字列として扱われてソート順が崩れるケースがあります。FILTER関数は元データの型をそのまま保持するため、後続の計算に使う場合はFILTER関数の方が安全です。ExcelとGoogleスプレッドシートの違いを5つの判断基準で選ぶ際も、FILTER関数の互換性は重要な選択基準の一つになります。

CHECK

▶ 今すぐやること:自分がメインで使っているツール(ExcelかGoogleスプレッドシート)でFILTER関数のAND条件を1つ実際に入力し、想定通りの結果が返るかを確認する(4分)

Q:GoogleスプレッドシートのFILTER関数は大文字と小文字を区別しますか?

A:デフォルトでは区別しません。区別したい場合は条件式に EXACT 関数を組み合わせてください(例:EXACT(A2:A100,”ABC”))。

Q:FILTER関数の結果を別のGoogleスプレッドシートに表示できますか?

A:IMPORTRANGE関数とFILTER関数を組み合わせることで別スプレッドシートのデータを条件抽出できます。構文は =FILTER(IMPORTRANGE(“URL”,”シート名!A:D”), …) です。ただし大量行では処理が重くなる点に注意してください。

フィルター複数条件は手法選択が9割

フィルターで複数条件を設定するとき、どの手法を使うかを最初に決めることが全体の作業効率を決めます。自動更新が必要ならFILTER関数(AND条件は「*」、OR条件は「+」)、Excelの古いバージョンや定型作業なら高度なフィルター(同行がAND、別行がOR)という基準で迷わず選択できます。条件が増えたら補助列で分解し、部分一致はCOUNTIF経由で対応する2つの技術があれば、フリーランスの実務データのほとんどに対応できます。

この記事で解説した3手法を習得すると、請求管理・売上抽出・案件整理の繰り返し作業が大幅に削減されます。特にFILTER関数の入金待ちダッシュボードは設定後すぐに効果を実感できます。まず今日1つだけFILTER関数を実際に入力してみてください。

状況次の一歩所要時間
FILTER関数を初めて使う実践術その1の空欄処理付きの基本構文を入力する5分
条件が4つ以上で式が複雑になっている実践術その2の補助列方式に切り替える15分
部分一致の抽出がうまくいかない実践術その3のCOUNTIF方式を試す10分
高度なフィルターが使いにくい実践術その4の条件表の配置を見直す5分
請求の見落としを防ぎたい実践術その5のダッシュボードを構築する20分

フィルター複数条件に関するよくある質問

Q:FILTER関数で3つ以上のOR条件を設定できますか?

A:できます。条件を「+」でつなぐ形式は3つ以上でも機能します(例:(A2:A100=”A社”)+(A2:A100=”B社”)+(A2:A100=”C社”))。条件が5つ以上になる場合は、補助列で条件フラグを作りFILTER関数に渡す方が管理しやすくなります。

Q:オートフィルターとFILTER関数を同じシートで使っても問題ありませんか?

A:技術的には併用できますが、オートフィルターで行が非表示になるとFILTER関数の参照範囲の見た目が変わり、混乱しやすくなります。FILTER関数を使うシートではオートフィルターを使わない運用を推奨します。

Q:高度なフィルターで日付の範囲条件(〇月〇日以降〜〇月〇日以前)は設定できますか?

A:設定できます。条件表の同じ列を2行に分けて、1行目に「>=2026/1/1」、2行目に「<=2026/3/31」と入力すると1月〜3月の範囲に絞り込めます。同じ列の複数行への入力はORではなくANDとして機能する特例です。

【出典・参照元】

Microsoftサポート「FILTER 関数」

マネーフォワードBiz「FILTER関数の使い方とは?複数条件や複数範囲を指定する方法」

Indeed Japan「Excel上で複数のフィルターを適用する方法」

note:Excel FILTER関数で複数条件の売上抽出の体験談

note:FILTER関数がオートフィルターより便利という実践メモ