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

フィルター処理するデータが複数のフィールドで条件を必要とする場合 (たとえば、すべて true である必要がある複数の条件によるフィルター処理や、複数の条件のいずれかに一致する行 (Type = "Produce" や Salesperson = "Davolio"など) を表示する場合は、[ 高度なフィルター] ダイアログ ボックスを使用できます。

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

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

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

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

高度なフィルター は、いくつかの重要な方法で フィルター とは異なる方法で動作します。

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

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

AND と OR ロジックについて

ロジックの種類 セットアップ方法 使用例 見つかるもの
AND ロジック (すべての条件が true である必要があります) 条件を同じ行に配置する 列 1 の型 = "生成"
Sales > 1000 (列 2)
(両方とも同じ行内)
Type IS "Produce" と Sales IS が 1000 を超える行のみ
OR ロジック (任意の条件を満たすことができます) 条件を別の行に配置する 行 1: Type = "Produce"
行 2: Type = "Meat"
(異なる行、同じ列)
型が "Produce" または Type IS "Meat" (またはその両方) である行

サンプル データ

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

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

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

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

これは、1 つの列が複数の値のいずれかと一致する行をフィルター処理する場合に使用します。 Davolio の行と、Buchanan の行の両方が表示されます。

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

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

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

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

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

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

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

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

ブールロジック: (Type = "Produce" AND Sales > 1000)

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

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

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

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

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

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

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

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

ブールロジック: (Type = "Produce" OR Salesperson = "Buchanan")

  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

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

ブールロジック: ( (Salesperson = "Davolio" AND Sales >3000) OR (Salesperson = "Buchanan" and Sales > 1500) )

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

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

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

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

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

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

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

ワイルドカード条件

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

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

    • 等号 (=) なしで 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 Tech Community の専門家にいつでも依頼したり、コミュニティでサポートを受けたりすることができます。