高度な条件を使ってフィルターを適用する

適用先
Excel for Microsoft 365 for Mac Excel 2024 Excel 2021 Excel 2019 Excel 2016

フィルター処理するデータで、すべてが満たされている必要がある複数の条件でフィルター処理したり、複数の異なる条件 (種別 = "農産物" OR 販売員 = "西脇" など) のいずれかに一致する行を表示したりするなど、複数のフィールドにまたがる抽出条件が必要な場合は、[ フィルターの詳細設定] ダイアログ ボックスを使用できます。

[ フィルターの詳細設定 ] ダイアログ ボックスを開くには、[ データ>詳細設定] をクリックします。

[データ] タブの [並べ替えとフィルター] セクションのスクリーンショット。

フィルターの詳細設定 使用例
高度なフィルター条件の概要
1 つの列に複数の検索条件を指定して、いずれかの条件に一致するデータを抽出する 販売員 = "西脇" OR 販売員 = "吉田"
複数の列に複数の検索条件を指定して、すべての条件に一致するデータを抽出する 種別 = "農産物" AND 売上 > 1000
複数の列に複数の検索条件を指定して、いずれかの条件に一致するデータを抽出する 種別 = "農産物" OR 販売員 = "西脇"
すべてのセット内の 1 つの列に複数の検索条件のセットを指定する (売上 > 6000 AND 売上 < 6500 ) OR (売上 < 500)
各セット内の複数の列に複数の条件のセットを指定する (販売員 = "西脇" AND 売上 >3000) OR
(販売員 = "吉田" AND 売上 > 1500)
ワイルドカード条件 販売員 = 2 文字目が '山' になっている名前

高度なフィルター条件の概要

高度なフィルターは 、いくつかの重要な点で フィルター とは動作が異なります。

  • この機能では、[オートフィルター] メニューではなく [フィルター オプションの設定] ダイアログ ボックスが開きます。
  • フィルター条件を入力する条件範囲 (データの上のセルを区切る) を作成し、[フィルターの詳細設定] ダイアログ ボックスにその範囲を使用するように指示します。
  • 条件値を変更しても、高度なフィルターが自動更新されない

高度なフィルターは複雑なフィルター処理シナリオでも引き続き使用できますが、Excel の Copilot などの新しい機能は、一部のユース ケースの代替アプローチとして、自然言語クエリによるデータ分析とフィルター処理をユーザー支援できるようになりました。

AND ロジックと OR ロジックの理解

ロジックの種類 設定方法 使用例 検出される内容
AND ロジック (すべての条件が true である必要があります) 同じ行に抽出条件を入れる 列 1 の種別 = "農産物"
列 2 の売上 > 1000
(両方が同じ行内)
種別が「農産物」であり、売上高が 1000 を超える行のみ
OR ロジック (任意の条件が true になる場合があります) 条件を別の行に配置する 行 1: 種類 = "農産物"
行 2: 種類 = "肉"
(異なる行、同じ列)
種類が "農産物" または種類が "肉" である (またはその両方) である行

サンプル データ

この記事のすべての手順に対して次のサンプル データを使用します。

このデータには、条件範囲 (A1:C4) およびリスト範囲 (A6:C10) として使用されるリスト範囲の上の 3 つの空白行が含まれます。 条件範囲には、列ラベルがあり、条件値とリスト範囲の間に少なくとも 1 つの空白行が含まれます。

このデータを使用するには、次の表でデータを選んでコピーし、新しい Excel ワークシートのセル A1 に貼り付けます。

営業担当者 売上
飲料 須山 ¥5,122
肉類 西脇 ¥450
農産物 吉田 ¥6,328
農産物 西脇 ¥6,544

この例では、ワークシートの結果は次のようになります。フィルター条件の範囲は青で囲まれ、リスト範囲 (フィルター処理するデータ) は赤で囲まれています。 

条件とリスト範囲のスクリーンショット

比較演算子

次の演算子は、2 つの値を比較する際に使用します。 これらの演算子を使用して 2 つの値を比較すると、結果は TRUE または FALSE のいずれかの論理値になります。

比較演算子 意味 使用例
= (等号) 等しい A1=B1
> (大なり記号) より大きい A1>B1
< (より小記号) より小さい A1<B1
>= (より大か等しい記号) 以上 A1>=B1
<= (より小か等しい記号) 以下 A1<=B1
<> (不等号) 等しくない A1<>B1

等号を使ってテキストまたは値を入力する

等号 (=) は、セルにテキストまたは値を入力するときに数式を示すために使用されるので、Excel は入力内容を評価します。しかし、このためにフィルターの処理結果が予期しないものになる場合があります。 テキストまたは値の等価比較演算子を示すには、条件範囲内の適切なセルに条件を文字列式として入力します。

=''=入力内容''

ここで 、entry は検索するテキストまたは値です。 次に例を示します。

セルに入力する内容 Excel による評価と表示
="=西脇" =西脇
="=3000" =3000

大文字と小文字の区別を考慮する

Excel のテキスト データのフィルター処理では、大文字と小文字は区別されません。 ただし、特定の数式を使用すると、大文字と小文字を区別した検索を実行できます。 例については、「ワイルドカード条件」セクションを参照してください。

事前に定義された名前を使用する

範囲に Criteria という名前を付けて、その範囲の参照が [検索条件範囲] ボックスに自動的に表示されるようにできます。 フィルター処理されるリスト範囲に対して Database という名前を定義し、行を貼り付ける領域に対して Extract という名前を定義して、それらの範囲がそれぞれ [リスト範囲] ボックスと [コピー先] ボックスに自動的に表示されるようにすることができます。

数式を使用して条件を作成する

数式の計算結果を検索条件として使用できます。 次の点に注意してください。

  • TRUE または FALSE に評価される数式しか使用できません。
  • 数式は通常と同じように入力する必要があります。次のような式を入力することはできません。
    =''=entry''
  • 列ラベルを検索条件のラベルに指定することはできません。検索条件のラベルを指定しないか、リスト範囲内の列ラベルとは異なるラベル (以降の例では、"平均値評価" と "完全一致") を指定します。
    相対セル参照や範囲名の代わりに列ラベルを数式に使用すると、エラー値 (#NAME?または #VALUE! などのエラー値が表示されます。 このエラーはリスト範囲のフィルター処理の結果には影響しないため、無視してかまいません。
  • 条件として使用する数式は、データ先頭行の対応するセルを相対参照する必要があります。
  • それ以外の参照には、絶対参照を使用します。

1 つの列に複数の検索条件を指定して、いずれかの条件に一致するデータを抽出する

論理式:  (販売員 = "西脇" OR 販売員 = "吉田")

1 つの列が複数の値のいずれかに一致する行をフィルター処理する場合に使用します。 ダヴォリオの列とブキャナンの列の両方が表示されます。

  1. 1 つの列に複数の検索条件を指定して、いずれかに一致するデータを抽出する場合、同じ列の個別の行に検索条件を入力します。 たとえば、条件範囲の最初の 2 行に次のように入力します。

    営業担当者 売上
    ="=西脇"
    ="=吉田"
  2. リスト範囲内のセルをクリックします。

  3. [データ] タブの [並べ替えとフィルター] で [詳細] をクリックします。

  4. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

  5. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$C$3」と入力します。

  6. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    肉類 西脇 ¥450
    農産物 吉田 ¥6,328
    農産物 西脇 ¥6,544

複数の列に複数の検索条件を指定して、すべての条件に一致するデータを抽出する

ブール論理: (種別 = "農産物" AND 売上 > 1000)

  1. 複数の列に検索条件を指定して、すべてに一致するデータを抽出する場合、同じ行に検索条件を入力します。 たとえば、次のように入力します。

    営業担当者 売上
    ="=農産物" >1000
  2. リスト範囲内のセルをクリックします。

  3. [データ] タブの [並べ替えとフィルター] で [詳細] をクリックします。

  4. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

  5. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$C$2」と入力します。

  6. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    農産物 吉田 ¥6,328
    農産物 西脇 ¥6,544

複数の列に複数の検索条件を指定して、いずれかの条件に一致するデータを抽出する

ブール論理: (種類 = "農産物" OR 販売員 = "吉田")

  1. 複数の列に検索条件を指定して、いずれかの条件に一致するデータを抽出する場合、別々の列と行に検索条件を入力します。 たとえば、次のように入力します。

    営業担当者 売上
    ="=農産物"
    ="=吉田"
  2. リスト範囲内のセルをクリックします。

  3. [ データ ] タブの [ 並べ替え & フィルター ] グループで [詳細設定] をクリックします。

  4. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

  5. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$B$3」と入力します。

  6. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    農産物 吉田 ¥6,328
    農産物 西脇 ¥6,544

すべてのセット内の 1 つの列に複数の検索条件のセットを指定する

ブール論理: ( (Sales > 6000 AND Sales < 6500 ) OR (Sales < 500) )

  1. 1 つの列を対象とする 2 セット以上の検索条件を指定するには、複数の列に同じ列ラベルを付けて指定します。 たとえば、次のように入力します。

    営業担当者 売上 売上
    >6000 <6500
    <500
  2. リスト範囲内のセルをクリックします。 例を使用し、リスト範囲 A6:C10 内の任意のセルをクリックします。

  3. [データ] タブの [並べ替えとフィルター] で [詳細] をクリックします。

  4. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

    ヒント

    フィルター処理された行を別の場所にコピーするときには、コピー操作に含まれる列を指定することができます。 フィルター処理する前に、フィルター処理された行を貼り付ける領域の最初の行に、列ラベルをコピーします。 フィルター処理するときに、[コピー先] ボックスで、コピーされた列ラベルの参照を入力します。 コピーされた行には、ラベルをコピーした列のみが含まれます。

  5. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$D$3」と入力します。

  6. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    肉類 西脇 ¥450
    農産物 吉田 ¥6,328

各セット内の複数の列に複数の条件のセットを指定する

ブール論理: ( (販売員 = "西脇" AND 売上 >3000) OR (販売員 = "吉田" AND 売上 > 1500) )

  1. 複数の列を対象とする 2 セット以上の検索条件を指定して、一致するデータを抽出するには、個別の行に検索条件セットを入力します。 たとえば、次のように入力します。

    営業担当者 売上
    ="=西脇" >3000
    ="=吉田" >1500
  2. リスト範囲内のセルをクリックします。 例を使用し、リスト範囲 A6:C10 内の任意のセルをクリックします。

  3. [データ] タブの [並べ替えとフィルター] で [詳細] をクリックします。

  4. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

  5. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$C$3」と入力します。

  6. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    農産物 吉田 ¥6,328
    農産物 西脇 ¥6,544

ワイルドカード条件

論理式: 販売員 = 2 文字目が '山' になっている名前

  1. 一部の文字だけが一致する文字列を検索するには、次のいずれかを行います。

    • 特定の文字で始まる文字列値を含む行を検索するには、等号 (=) を使用せずにその文字または文字列を入力します。 たとえば、検索条件として「西」と入力すると、"西脇"、"西田"、"西崎" などが検索されます。

    • ワイルドカード文字を使用します。

      入力する文字列 検索対象
      ? (疑問符) 任意の 1 文字
      たとえば、「インターフェ?ス」と入力すると "インターフェイス" や "インターフェース" が検索されます。
      * (アスタリスク) 任意の文字数の任意の文字
      たとえば、「Win*」と入力すると "Win98" や "Win2000" が検索されます。
      ˜ (チルダ) (?、*、または ˜ の前に入力) 疑問符、アスタリスク、またはチルダ
      たとえば、「fy91~?」と入力します。 "fy91?" が検索されます
  2. 条件範囲として使用できるリスト範囲の上に少なくとも 3 つの空白行を挿入します。 条件範囲には列ラベルが必要です。 条件値とリスト範囲の間に少なくとも 1 つの空白行があることを確認してください。

  3. 列ラベルの下の行に、一致させる条件を入力します。 例を使用し、次のように入力します。

    営業担当者 売上
    ="=肉*"
    ="=?山*"
  4. リスト範囲内のセルをクリックします。 例を使用し、リスト範囲 A6:C10 内の任意のセルをクリックします。

  5. [データ] タブの [並べ替えとフィルター] で [詳細] をクリックします。

  6. リストをフィルター処理する (インプレースで) 条件に一致しない行を非表示にするか、[別の場所にコピー] 条件に一致する行をワークシートの別の領域にコピーする () のいずれかを選択します。

  7. [条件範囲] ボックスに、条件ラベルを含む条件範囲の参照を入力します。 例を使用し、「$A$1:$B$3」と入力します。

  8. 例を使用すると、リスト範囲のフィルター処理された結果は次のようになります。

    営業担当者 売上
    飲料 須山 ¥5,122
    肉類 西脇 ¥450
    農産物 吉田 ¥6,328

高度なフィルターを削除またはクリアする方法

高度なフィルターを適用した後、それを削除してすべてのデータをもう一度表示することもできます。 操作手順を次に示します。

  1. フィルター処理されたデータ範囲内の任意のセルをクリックします。
  2. [データ ファイル] タブを選択する。
  3. [並べ替え & フィルター] グループの [ クリア] をクリックします。
  4. すべての行が再度表示されます。

補足説明

Excel 技術コミュニティの専門家にいつでも質問するか、コミュニティでサポートを受けることができます。