Excelで、こんなお悩みを持ったことはないでしょうか?
・特定の条件に合うデータだけを自動で抽出したい
・毎回フィルターを手動で設定するのが面倒。。。
そんなときに便利なのが、Excelの「FILTER関数」です。
FILTER関数を使えば、条件に合うデータをリアルタイムで抽出でき、作業の効率がグッと上がります。
この記事では、FILTER関数の基本的な使い方や、他関数と組み合わせた便利な使い方を画像付きで分かりやすく解説します。
- FILTER関数とは?オートフィルターとの違いを解説
- 単一/複数条件でも簡単抽出!FILTER関数の基本的な使い方
- エラー対策もバッチリ!条件に合うデータがない場合のエラーメッセージ設定方法
- FINDやSORT関数など、他関数との組み合わせでもっとFILTER関数を活用する方法
FILTER関数って何?
FILTER関数は、指定した範囲の中から特定の条件に一致するデータを抽出します。
従来のフィルター操作より柔軟で、リアルタイムにデータが更新されるのが特長です。
オートーフィルターのように手動で操作する必要がなく、関数だけで動的に抽出されるため、様々な場面で活躍する関数となります。
ではさっそく、FILTER関数の中身を見ていきましょう。
FILTER関数の書式
FILTER関数は、以下のように記述します。
=FILTER(array,include,[if_empty]
それぞれの説明は以下の通りです。
引数 | 説明 |
---|---|
array | 抽出したいデータの範囲 |
include | 抽出条件を指定する論理式 |
if_empty | 条件に一致するデータがなかった場合に表示する値 ※省略可能 |
「array」はそのまま抽出したい範囲を選択、「include」はフィルターをかけたい条件を指定することで、自動的に対象データを抽出することができます。
通常のオートフィルターとの違い
Excelには、「オートフィルター」という便利な機能がついています。
下の画像にある三角マークのようなやつですね。Excelを使っている方にとってはおなじみかと思います。

オートフィルターでもいいんじゃない?と思われる方もいらっしゃると思いますが、比較してみると多くの違いがあります。
オートフィルターとの違いを比較表にまとめてみました。
項目 | FILTER関数 | オートフィルター |
---|---|---|
自動更新 | ○(動的配列) | ×(手動で更新) |
複数条件 | ○(AND/OR可能) | △(複雑条件は不便) |
表示形式 | 別セルに表示 | 元データを非表示 |
他シート反映 | ○(関数でOK) | △(コピー必要) |
バージョン | オフィス365/2021以降 | 全バージョン |
大きく違うのは、FILTER関数で表示するデータは大元のデータと異なること、条件を設定しておけば手動でフィルタリングしなくても自動更新されるという点ですね。
この表で見ると、FILTER関数を使うメリットは様々あることが分かると思います。
では次に、FILTER関数の使い方を見ていきましょう。
FILTER関数の基本的な使い方
こちらでは、FILTER関数の基本的な使い方を紹介していきます。
今回以下のようなサンプルデータを用意しました。
このデータを元に、FILTER関数で条件を絞っていきたいと思います。
■今回使用する表はこちら↓↓

一つの条件でフィルターをかける場合
まずは、一つの条件でフィルターをかけるケースを説明します。
今回は、以下データより「部署」が「営業部」であるデータを抽出していきます。

この場合、FILTER関数を以下のように入力します。
=FILTER(FILTER_データ!A2:E13,FILTER_データ!C2:C13="営業部")
これで、「営業部」のデータだけ抽出することができます。

複数の条件でフィルターをかける場合(AND条件)
つぎに、複数条件でフィルターをかけるケースを説明します。AND条件なので、すべての条件を満たすデータのみ抽出することができます。
以下データより「部署」が「総務部」、且つ「勤続年数」が「5年以上」であるデータを抽出していきます。

複数条件を全て満たすデータを抽出する場合、乗算演算子「*」を使用します。(掛け算で使用する記号ですね)
=FILTER(FILTER_データ!A2:E13,(FILTER_データ!C2:C13="総務部")*(FILTER_データ!D2:D13>=5))
これで、「総務部」且つ勤続年数が「5年」以上のデータを抽出することができます。

複数の条件でフィルターをかける場合(OR条件)
同じく複数条件でフィルターをかけるケースですが、今回はOR条件で抽出するパターンです。いずれかの条件を満たすデータのみ抽出することができます。
以下データより「部署」が「総務部」、または「勤続年数」が「5年以上」であるデータを抽出していきます。

いずれかの条件を満たすデータを抽出する場合、加算演算子「+」を使用します。
=FILTER(FILTER_データ!A2:E13,(FILTER_データ!C2:C13="総務部")+(FILTER_データ!D2:D13>=5))
これで、「総務部」または勤続年数が「5年」以上のデータを抽出することができます。

フィルター条件に合致するものがないときにメッセージを出す場合
条件に合致するデータがないとエラーが発生しますが、その場合にエラーメッセージを表示することもできます。
以下データより、「勤続年数」が「11年以上」であるデータを抽出できるか確認してみます。

データの中には、勤続年数が「11年以上」のデータはないため、エラーが発生します。
そこで、エラーが発生した場合に「対象データがありません」とエラーメッセージを表示するように設定します。
=FILTER(FILTER_データ!A2:E13,FILTER_データ!D2:D13>=11,"対象データがありません")
これで、対象データがない場合に、「対象データがありません」とエラーメッセージを表示させることができます。

- [IF_EMPTY]欄に記述がないと、「#CALC!」というエラーが表示されます。
FILTERをもっと便利に!他の関数との組み合わせで活用する方法
ここまでFILTER関数の基本的な使い方を見てきましたが、便利な関数であることがご理解いただけたと思います。
しかし、FILTER関数は他の関数と組み合わせることで、さらに便利に活用することができます。
こちらでは、
・FIND関数との組み合わせで、あいまい検索を実行する方法
・SORT関数との組み合わせで、データを並び替えて抽出する方法
を紹介します。
あいまい条件でフィルターをかける場合
この単語が入っているデータを抽出したいというとき、結構あると思います。
しかしFILTER関数の場合、どうやらワイルドカード(*)が使えないようです。
しかしFIND関数を使うことで、あいまい条件でフィルターをかけることが可能です。
以下データより、「部署」に「務」があるデータを抽出できるか確認してみます。

抽出条件を入力する箇所に、FIND関数で条件を指定します。
=FILTER(FILTER_データ!A2:E13,IFERROR(FIND("務",FILTER_データ!C2:C13),0))
これで、部署に「務」を含むデータを抽出することができます。

※FIND関数って何?
→対象の範囲から、特定の文字列があるかどうかを調べることができる関数です。
(対象の文字列がある場合、対象文字列の開始位置を返します)
=FIND(検索文字列,対象,[開始位置])
それぞれの説明は以下の通りです。
引数 | 説明 |
---|---|
検索文字列 | 検索したい文字列を指定 |
対象 | 検索したい文字列がある範囲を指定 |
開始位置 | 「対象」の文字列で、何文字目から検索するかを決めたい場合に指定 ※省略可能 |
例)「営業部」という文字列で「業」は2番目にある文字列のため、「2」が結果として返ってきます。

SORT関数と組み合わせ、並び替えて抽出することも可能
SORT関数と組み合わせることで、抽出したデータを並び替えることも可能です。
以下データより、「雇用形態」が「正社員」であるデータを抽出し、「勤続年数」が多い順に並び替えできるか確認してみます。

正社員でフィルターをかけた数式を、SORT関数で囲うことで順番を並び替えることができます。
=SORT(FILTER(FILTER_データ!A2:E13,FILTER_データ!E2:E13="正社員"),4,-1)
SORT関数については補足で詳細を記載していますが、今回は
・「4」→4列目(=勤続年数)
・「-1」→降順(上から数が大きい順番に並び替える)
※昇順(上から数が小さい順番に並び替える)の場合、「1」もしくは引数自体を省略
で並び替えをしています。
ちゃんと「勤続年数」が多い順に並び替えできていることが確認できます。

※SORT関数って何?
→SORT関数とは、指定した範囲または配列の順番を並び替えします。
=SORT(array,[sort_index],[sort_order],[by_col])
それぞれの説明は以下の通りです。
引数 | 説明 |
---|---|
array | 並び替えしたいデータの範囲 |
sort_index | 並び替えの基準となる行または列を示す数値 ※省略可能 |
sort_order | 目的の並び替え順序を示す数値 ※省略可能 ・昇順の場合は1(規定値) ・降順の場合は-1 |
by_col | 目的の並び替え方向を示す論理値 ※省略可能 ・FALSEの場合は「行」で並び替え(規定値) ・TRUEの場合は「列」で並び替え |
まとめ:FILTER関数で、Excel業務をもっとスマートに!
FILTER関数は、Excel業務を効率化する強力な関数です。
オートフィルターとの違いは、
・元データには影響しないこと(新しい範囲に数式で表示)
・条件を数式などで設定しておくと、自動的に条件が反映される
など様々あります。
SORT関数との連携までマスターすればさらに便利に!
使いこなして、作業効率をグングン上げていきましょう!
最後まで読んでいただき、ありがとうございました!
コメント