• 更新日 : 2025年12月2日

スプレッドシートのフィルターで複数条件を設定するには?FILTER関数のAND・OR条件と複合的な絞り込み方法

Googleスプレッドシート(Google Sheets)では、FILTER関数を使って複数条件を組み合わせることで、大量のデータから必要な情報を効率的に抽出できます。

本記事では、AND条件・OR条件の基本構文から、アスタリスク(*)やプラス(+)演算子による複合条件の作成方法、さらに REGEXMATCH関数・IF関数・ネスト構造を使った応用的な絞り込み手法までを、実務で使える具体例とともに解説します。

条件の組み立てを理解すれば、営業分析・顧客抽出・在庫管理など、日常業務のデータ活用をより柔軟に行えるようになります。

FILTER関数で複数条件を指定する基本的な構文は?

FILTER関数では、カンマで区切って複数の条件を追加することで、AND条件として自動的に処理されます。 この基本構文により、複数の条件をすべて満たすデータのみを抽出できます。

基本的な構文は「=FILTER(範囲, 条件1, 条件2, …)」となり、すべての条件を満たす行のみが結果として返されます。例えば、売上データから「売上金額が10万円以上」かつ「地域が東京」のデータを抽出する場合、2つの条件をカンマで区切って記述します。この方法により、複雑な条件でも簡潔な数式で表現できます。

FILTER関数の基本構造と引数の役割

FILTER関数の第1引数には抽出したいデータ範囲を指定し、第2引数以降に条件式を記述します。各条件式は、TRUE/FALSEの配列を返す必要があり、TRUEの位置にあるデータが抽出対象となります。

具体的な記述例:

=FILTER(A2:D100, B2:B100>=100000, C2:C100=”東京”)

この数式では、A2:D100の範囲から、B列が100000以上かつC列が「東京」の行を抽出します。条件式には比較演算子(=、<>、>、<、>=、<=)や文字列の一致判定を使用でき、柔軟な条件設定が可能です。

条件式で使用できる演算子と関数の組み合わせ

FILTER関数の条件式では、比較演算子だけでなく、各種関数を組み合わせることで、より高度な条件指定が可能です。 TEXT関数、DATE関数、REGEXMATCH関数などを活用することで、複雑な条件にも対応できます。

日付条件の例:

=FILTER(A:D, DATE(2024,1,1)<=B:B, B:B<=DATE(2024,12,31))

この式では、2024年のデータのみを抽出します。また、REGEXMATCH関数を使用すると、部分一致や正規表現によるパターンマッチングも可能になります。

エラー処理とデフォルト値の設定方法

条件に一致するデータが存在しない場合、FILTER関数は「#N/A」エラーを返します。IFERROR関数でラップすることで、エラー時の表示を制御できます。

エラー処理の実装例:

=IFERROR(FILTER(A:D, B:B>100000), “該当データなし”)

また、ARRAYFORMULA関数と組み合わせることで、動的な条件式の作成も可能です。これにより、条件自体を別のセルから参照したり、計算結果に基づいて条件を変更したりできます。

AND条件で複数の条件をすべて満たすデータを抽出する方法は?

AND条件は、FILTER関数に複数の条件をカンマ区切りで追加するか、アスタリスク(*)演算子で条件を掛け合わせることで実現できます。 どちらの方法も、すべての条件を同時に満たすデータのみを抽出します。

AND条件は、複数の基準で厳密にデータを絞り込む際に使用されます。例えば、「売上が目標以上」かつ「利益率が基準値以上」かつ「特定期間内」といった複合的な条件でデータを抽出する場合に有効です。条件が増えるほど、抽出されるデータは限定的になります。

カンマ区切りによるAND条件の実装

最も直感的なAND条件の実装方法は、FILTER関数の引数として条件をカンマで区切って列挙することです。各条件は独立して評価され、すべてがTRUEとなる行のみが抽出されます。

実務での活用例:

=FILTER(A2:F1000,

D2:D1000>=500000,  // 売上50万円以上

E2:E1000>=0.2,   // 利益率20%以上

B2:B1000>=DATE(2024,1,1),   // 2024年以降

C2:C1000=”正社員”)   // 雇用形態が正社員

この方式では、条件を追加・削除する際の修正が容易で、可読性も高くなります。

アスタリスク演算子を使用したAND条件の記述

条件式をアスタリスク(*)で連結することで、1つの条件式としてAND条件を表現できます。 この方法は、条件を動的に組み立てる場合や、条件の一部を変数化する際に便利です。

アスタリスク演算子の使用例:

=FILTER(A:E, (B:B>100000)*(C:C=”東京”)*(D:D<>”未確定”))

括弧で囲むことで条件の優先順位を明確にでき、複雑な論理式も構築できます。TRUE/FALSEの値は内部的に1/0として扱われるため、掛け算によってAND演算が実現されます。

範囲指定と文字列条件を組み合わせたAND条件

数値の範囲指定と文字列の一致条件を組み合わせることで、実用的なデータ抽出が可能になります。COUNTIF関数やMATCH関数を条件式に組み込むことで、リストに基づく複数条件の指定も実現できます。

リストベースの条件指定:

=FILTER(A:D,

B:B>=MIN(F2:F10),   // 指定範囲の最小値以上

B:B<=MAX(F2:F10),   // 指定範囲の最大値以下

ISNUMBER(MATCH(C:C, G2:G5, 0)))  // リストG2:G5に含まれる値

OR条件で複数の条件のいずれかを満たすデータを抽出する方法は?

OR条件は、プラス(+)演算子で条件を加算するか、複数のFILTER関数の結果を統合することで実現できます。 いずれかの条件を満たすデータをすべて抽出できます。

OR条件は、複数の選択肢から該当するものを広く収集する場合に使用されます。例えば、「東京または大阪の顧客」「売上が上位または成長率が高い商品」といった、代替的な条件でデータを抽出する際に効果的です。

プラス演算子によるOR条件の実装方法

条件式をプラス(+)で連結し、結果が1以上になる行を抽出することで、OR条件を実現できます。各条件がTRUE(1)またはFALSE(0)を返すため、加算により少なくとも1つの条件を満たす行が特定されます。

OR条件の基本実装:

=FILTER(

A:F,

((B:B=”東京”)+(B:B=”大阪”)) * (C:C>=1000000),

D:D>=DATE(2024,1,1))

※ さらに高速化したい場合は、列全体参照ではなく実データ範囲(例:A2:F10000,B2:B10000 など)に絞ってください。

この式では、B列が「東京」「大阪」「名古屋」のいずれかに該当する行が抽出されます。条件が増えても、プラス演算子で追加するだけで対応できます。

複数のFILTER結果を統合する方法

異なる条件で抽出した複数のFILTER結果を、配列操作関数で統合することも可能です。 この方法は、条件ごとに異なる処理を適用したい場合に有用です。

UNIQUE関数による重複除去を含む統合:

=UNIQUE({

FILTER(A:D, E:E=”優先顧客”);

FILTER(A:D, F:F>=1000000)})

セミコロンで区切ることで縦方向に結果を結合し、UNIQUE関数で重複を除去します。この手法により、複雑な条件の組み合わせも柔軟に対応できます。

REGEXMATCH関数を活用した複数パターンのOR条件

正規表現を使用すると、複数の文字列パターンを1つの条件式で表現できます。REGEXMATCH関数は、複雑なテキスト条件をシンプルに記述する強力なツールです。

正規表現によるOR条件:

=FILTER(A:D, REGEXMATCH(B:B, “東京|大阪|福岡”))

パイプ(|)記号でパターンを区切ることで、複数の文字列のいずれかにマッチする条件を作成できます。部分一致や大文字小文字の区別なども、正規表現のオプションで制御可能です。

複合的な条件を組み合わせたフィルタリングは?

AND条件とOR条件を組み合わせることで、実務で必要となる複雑な抽出条件を構築できます。 括弧を使用して条件の優先順位を明確にし、論理的な条件式を作成します。

複合条件は、「(条件A かつ 条件B)または(条件C かつ 条件D)」のような、入れ子構造の論理式として表現されます。売上分析、顧客セグメンテーション、在庫管理など、様々な業務シーンで活用できます。

括弧を使った条件の優先順位制御

複雑な条件式では、括弧で囲むことで演算の優先順位を制御します。AND演算(*)はOR演算(+)より優先度が高いため、意図した結果を得るには適切な括弧の使用が不可欠です。

複合条件の実装例:

=FILTER(A:F,

((B:B=”東京”)+(B:B=”大阪”)) * (C:C>=1000000),

D:D>=DATE(2024,1,1))

この式は「(東京または大阪)かつ売上100万円以上」かつ「2024年以降」のデータを抽出します。

動的な条件設定による柔軟なフィルタリング

セル参照を活用することで、条件を動的に変更できるフィルタリングシステムを構築できます。 ドロップダウンリストやチェックボックスと連動させることで、インタラクティブなダッシュボードを作成できます。

動的条件の実装:

=FILTER(A:D,

IF(G1=”全て”, TRUE, B:B=G1),     // G1セルの選択値で地域を絞り込み

C:C>=G2,    // G2セルの値以上の売上

IF(G3, D:D=”完了”, TRUE))        // G3がTRUEの場合のみ完了データに限定

IF関数を組み込むことで、条件の有効/無効を切り替えられます。

ネストしたFILTER関数による段階的な絞り込み

FILTER関数の結果を別のFILTER関数の入力として使用することで、段階的なデータ絞り込みが可能です。各段階で異なる条件ロジックを適用できるため、複雑な抽出要件にも対応できます。

=FILTER(

A:E,

(B:B=”東京”)+(B:B=”大阪”),

C:C>=AVERAGE(C:C)*1.2)

※ LET 非対応なら、内側 FILTER を同じ式で二度書いて INDEX(…,0,3) を条件に用いる方法があります(計算負荷は増えます)。

配列数式と組み合わせた高度な条件指定

ARRAYFORMULA関数やSUMPRODUCT関数と組み合わせることで、より sophisticated な条件指定が可能になります。複数列の値を組み合わせた条件や、集計値に基づく条件なども実装できます。

複数列の組み合わせ条件:

=FILTER(

A:E,

(B:B&”-“&C:C)=”東京-A部門”,

(D:D*E:E)>=1000000)

※ ARRAYFORMULA は FILTER 内では不要です(配列演算が自動で行われます)。範囲は可能なら列全体ではなく実データ範囲に絞ってください。

複数条件フィルターでデータ分析を効率化

GoogleスプレッドシートのFILTER関数を活用して複数条件を設定すれば、必要なデータを的確に抽出できます。

AND条件・OR条件の使い分けや括弧による優先順位の制御を理解することで、より柔軟なフィルタリングが可能になります。

さらに、セル参照を利用した動的な条件設定や、ネスト構造による段階的な絞り込みを組み合わせれば、実務レベルのデータ分析にも対応できます。

FILTER関数を使いこなすことで、スプレッドシートを強力な分析・意思決定ツールへと進化させられます。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事