FILTER関数とは
FILTER関数とは、複数条件に一致したデータを抽出したり、その抽出したデータを、元のデータはそのままに、抽出したデータのみ別の場所に反映することも可能な、とても便利な関数となります。
エクセルの標準機能に「フィルター機能」がありますが、手動でフィルターをかける必要があります。
その点、FILTER関数だと、関数を組んでおけば手動で操作する必要がなく、他の関数と一緒に組むことで複数条件の抽出や、自由度の高いデータ抽出も可能なので、この機会にぜひマスターしておきましょう!
練習用ファイルを用意しましたので、ファイルを使用される方は下記よりダウンロードしてください。
単一条件でフィルター設定
まずは基本的な動きを理解するために、単一条件でフィルター設定をしてみましょう。
A~C列に入っているデータから条件を指定してデータを抽出し、抽出した結果をE~G列に表示させます。
文字列でフィルター設定
結果を反映させたい最初のセルとなるE2セルに = と入力後FILTER関数を入れます。途中まで入力すると候補が絞れるので、FILTER関数を選択したら Tab キーで使用する関数を確定させます。

使用する関数を確定させたら、第1引数を入力します。
第1引数は「配列」となり、フィルター設定したいデータが入っている範囲を全て選択します。
今回はA列~C列の2行目から最終行までが第1引数の範囲となります。

第1引数を入力したらカンマ , を打って第2引数を入力します。
第2引数は「含む」となりますが、ここではフィルター設定したい値が入っている列と、フィルター設定したい値をを入力します。ここでは「りんご」でフィルターをかけてみます。
入力方法は、関数内に直接入力する方法と、セルを指定する方法がありますが、まずは関数内に直接入力する方法をやってみましょう。
最初にフィルター設定したい値が入っている列を選択し = と入力します。

続けてフィルターをかけたい値を入力します。今回フィルターを設定する「りんご」は文字列なので、ダブルクオテーション “ で囲むのを忘れないようにしましょう。

「フィルター設定したい列=フィルター設定したい値」までが第2引数となります。
第3引数は任意の引数なので、一旦ここで Enter を押してFILTER関数を完成させましょう。
E列~G列にりんごのデータのみ抽出することができました。


スピル機能でE2セルにFILTER関数を入力するだけで
全ての列&行にデータが反映されました。
スピル機能の記事は準備中なので、詳細を知りたい方は動画をご確認くださいね
=FILTER(フィルター設定したいデータ全範囲,フィルター設定したいデータ列="フィルター設定したい値")
=FILTER(A2:C56,B2:B56="りんご")
セル指定でフィルター設定
上記の「文字列でフィルター設定」だけでなく、セル指定で同じようにフィルター設定することも可能です。
第1引数は「文字列でフィルター設定」と同じですが、第2引数の入力方法が少し変わりますので、第2引数から一緒にやってみましょう!
下記は、第2引数の範囲を指定し = を打ったところです。
ここまでは「文字列でフィルター設定」と同じですね。

次にフィルター設定したい値を入力しますが、ここでフィルター設定したい値が入っているセルを指定します。
今回はI2セルに検索値を入力するセルを設けていますので、I2セルを選択します。


「文字列でフィルター設定」では第3引数は一旦省略したので
ここでは第3引数も指定してみましょう。
第2引数を入力したら、カンマ , を打って第3引数を入力します。
第3引数は「空の場合」となり、第2引数で指定した値がない場合、どのように表示するかを指定できます。
今回は「正しい検索値を入力してください」と表示するように組んでみます。
ここも文字列なので、ダブルクオテーション “ で囲むのを忘れないようにしましょう。

最後に Enter を押せば完成です。

このように、セルでフィルター設定したい値を指定すると、I2セルの値を変更するだけで変更可能なので、用途によって使い分けると良いですね。


第3引数を省略した際にフィルター結果がない場合は
「#CALC!」エラーが表示されます。
=FILTER(フィルター設定したいデータ全範囲,フィルター設定したいデータ列="フィルター設定したい値",フィルター結果がない場合の表示)
=FILTER(A2:C56,B2:B56=I2,"正しい検索値を入力してください")
複数条件でフィルター設定
上記で単一条件でのフィルター設定を練習して、FILTER関数の基本の動きが理解できたところで、複数条件でのフィルター設定を練習していきましょう。
「~」かつ「~」でフィルター設定
ここではA列~D列のデータから「A店」かつ「りんご」のデータを抽出し、F列~I列に表示していきます。
結果を反映させたい最初のセルとなるF2セルに = と入力後FILTER関数を入れ、Tab キーで確定させます。

使用する関数を確定させたら、第1引数を入力します。
今回はA列~D列の2行目から最終行が第1引数となります。
ここまでは「文字列でフィルター設定」と同じですね。

第1引数を入力したら、カンマ , を打って第2引数を入力しますが、今回は複数条件です。
複数条件の場合は、それぞれの条件をカッコで囲むルールになっているので、まずカッコ ( を入力してから最初の「フィルター設定したい列=フィルター設定したい値」を入力します。
今回は「A店」かつ「りんご」なので、まず店舗名が入っているB2セルから最終行までを選択し = 打ったら”A店”と入力しカッコ ) を閉じます。


この時「A店」をダブルクオテーション “ で囲むのを
忘れないようにしましょう。
第2引数の最初の条件を指定したら、次に第2引数の2つ目の条件を指定しますが、今回の条件である「~」かつ「~」の場合は、1つ目の条件と2つ目の条件を、アスタリスク * で繋ぐルールになっているので、最初の条件のカッコを閉じたら、アスタリスク * を入力し、2つ目の条件の開始のカッコ ( を入力します。

あとは最初の条件と同じ要領で、2つ目の条件である「りんご」の列と値を入力し2つ目の条件のカッコ ) を閉じます。

第2引数を入力し、第3引数を省略する場合は、最後にFILTER関数のカッコ ) を閉じて Enter を押せば完成です。
第3引数を入力したい場合は、第2引数のすべての条件を入力後、最後のカッコ ) の後にカンマ , を打ってからFILTER関数のカッコ ) を閉じ、Enter を押して完了です。

F列~I列に「A店」の「りんご」のデータのみ抽出反映されました。

=FILTER(データ全範囲,(1つ目の条件)*(2つ目の条件),結果がない場合の表示)
=FILTER(A2:D56,(B2:B56="A店")*(C2:C56="りんご"),"")
★複数条件「~」かつ「~」の場合、条件をアスタリスク*で繋ぐ
「~」または「~」でフィルター設定
ここではA列~D列のデータから「りんご」または「お米」のデータを抽出し、F列~I列に表示していきます。
第1引数は「~」かつ「~」と同じで、第2引数の条件と条件のつなぎ方が少し変わりますので、第2引数から一緒にやってみましょう!
下記は、第2引数の最初の条件をし、カッコ ) を閉じたところです。
ここまでは最初の条件に違いはありますが、考え方は「~」かつ「~」と同じですね。

第2引数の最初の条件を指定したら、次に第2引数の2つ目の条件を指定しますが、今回の条件である「~」または「~」の場合は、1つ目の条件と2つ目の条件を、プラス+ で繋ぐルールになっているので、最初の条件のカッコを閉じたら、プラス + を入力し、2つ目の条件の開始のカッコ ( を入力します。

あとは最初の条件と同じ要領で、2つ目の条件である「お米」の列と値を入力し2つ目の条件のカッコ ) を閉じます。

第2引数を入力後、第3引数を省略する場合は、最後にFILTER関数のカッコ ) を閉じて Enter を押せば完成です。
第3引数を入力したい場合は、第2引数のすべての条件を入力後、最後のカッコ ) の後にカンマ , を打ってからFILTER関数のカッコ ) を閉じ、Enter を押して完了です。

F列~I列に「りんご」と「お米」のデータのみ抽出反映されました。

=FILTER(データ全範囲,(1つ目の条件)+(2つ目の条件),結果がない場合の表示)
=FILTER(A2:D56,(C2:C56="りんご")+(C2:C56="お米"),"-")
★複数条件「~」または「~」の場合、条件をプラス+で繋ぐ
「~以上」「~以下」など数値でフィルター設定
複数条件の最後に、「~以上」「~以下」など数値でフィルター設定する方法をやってみましょう!
ここではA列~D列のデータから「A店」の「500円以上」のデータを抽出し、F列~I列に表示していきます。
基本的には「~」かつ「~」と同じですが、第2引数で「~以上」と指定する部分をやってみましょう。
下記は、第2引数の最初の条件をし、今回の条件である「A店」かつ「500円以上」の条件同士をつなぐアスタリスク * を入力したところです。

次に2つ目の条件を入力してみましょう。
2つ目の条件は「500円以上」なので、カッコ ( を入力したら、単価が入っているD2セル~最終行までを選択します。

次に、500円「以上」を指定する記号 > = を入力したら500と入力しカッコ ) を閉じます。


500は文字列ではなく数値なので
ダブルクオテーション “ は不要です
第2引数を入力後、第3引数を省略する場合は、最後にFILTER関数のカッコ ) を閉じて Enter を押せば完成です。
第3引数を入力したい場合は、第2引数のすべての条件を入力後、最後のカッコ ) の後にカンマ , を打ってからFILTER関数のカッコ ) を閉じ、Enter を押して完了です。


F列~I列に「A店」の「単価500円以上」のデータのみ抽出反映されました。
=FILTER(データ全範囲,(1つ目の条件)*(2つ目の条件),結果がない場合の表示)
=FILTER(A2:D56,(B2:B56="A店")*(D2:D56>=500),"")
エクセル関数では、条件を指定するため記号を使用することが多いです。
ここでご紹介する記号は、他の関数でも同じ働きをするので覚えておきましょう。
~より大きい(~を含まない) | > |
~以上(~を含む) | >= |
~以下(を含む) | <= |
~より小さい(~を含まない) | < |
等しい | = |
~以外(~に等しくない) | <> |
0文字以上の任意の文字列(ワイルドカード) | * |
1文字の任意の文字列(ワイルドカード) | ? |

今回、複数条件の練習では文字列での指定をやりましたが
練習用ファイルにはセルで指定する場合も練習できるよう
項目を設けていますので、ぜひ両方練習してみてください!
まとめ
FILTER関数の基本の動きをご紹介しました。
ここでご紹介したのは基本の動きなので、他の関数と組み合わせることで、もっと自由度の高い複雑なフィルターを設定することも可能です。
FILTER関数を自在に使用できるようになるためにも、まずは基本の動きを確実にマスターしておきましょう!
動画でもご紹介していますので、動画を見ながら操作を確認したい方は下記からどうぞ!

励みになります!高評価とチャンネル登録よろしくおねがいいたします