Excelで、こんなお悩みを持ったことはないでしょうか?
・特定の条件に合うデータだけを自動で抽出したい
・毎回フィルターを手動で設定するのが面倒。。。
そんなときに便利なのが、Excelの「FILTER関数」です。
FILTER関数を使えば、条件に合うデータをリアルタイムで抽出でき、作業の効率がグッと上がります。
この記事では、初心者の方でも使いこなせるよう、次のポイントを分かりやすく解説していきます。
・FILTER関数の基本構文と使い方
・単一条件/複数条件での抽出方法
・あいまい検索での抽出方法
・抽出対象がない場合のエラーメッセージ表示
・SORT関数と組み合わせて並び替える方法
ぜひ最後まで読んでいただけると幸いです。
FILTER関数って何?
FILTER関数は、指定した範囲の中から特定の条件に一致するデータを抽出します。
従来のフィルター操作より柔軟で、リアルタイムにデータが更新されるのが特長です。
例えば、
・営業部の社員だけを別シートに表示したい
・勤続年数が5年以上、かつ正社員だけのデータを抽出したい
といった場面で活用できます。
オートーフィルターのように手動で操作する必要がなく、関数だけで動的に抽出されるため、月次レポートや人事一覧の自動更新にも最適です!
FILTER関数は、以下のように記述します。
=FILTER(array,include,[if_empty]
それぞれの説明は以下の通りです。
引数 | 説明 |
---|---|
array | 抽出したいデータの範囲 |
include | 抽出条件を指定する論理式 |
if_empty | 条件に一致するデータがなかった場合に表示する値 ※省略可能 |
実際に使ってみないと分かりにくいですよね。。。
そこで、これからパターン別の活用方法を図解付きで紹介していきます。
【実践編】FILTER関数の使い方
ではさっそく、FILTER関数を活用していきましょう!
こちらでは、実際にFILTER関数を実行する方法をいくつか紹介していきます!
今回は、
・一つの条件でフィルターをかける場合
・複数の条件でフィルターをかける場合(2つ、3つ)
・あいまい条件でフィルターをかける場合
・フィルター条件に合致するものがない場合にメッセージを出す場合
・SORT関数との組み合わせ方
と分けて紹介していきますね。
■今回使用する表はこちら↓↓
こちらの表をもとに、FILTER関数を使っていきたいと思います。

一つの条件でフィルターをかける場合
まずは、この条件の場合フィルターをかけたい!とうケースを紹介します。
今回は、
・「部署」が「営業部」
を条件として、データを抽出しました。記載方法は以下の通りです。
=FILTER(FILTER_データ!A2:E13,FILTER_データ!C2:C13="営業部")

しっかり、「営業部」のデータだけ抽出することができましたね!
複数の条件でフィルターをかける場合(2つ)

複数の条件でフィルターをかけたいな~
というときもありますよね。もちろん、設定可能です!
条件を2つ設定する場合、乗算演算子「*」を使用します。
今回は、
・「部署」が「総務部」
・「勤続年数」が5年以上
を条件として、データを抽出しました。記載方法は以下の通りです。
=FILTER(FILTER_データ!A2:E13,(FILTER_データ!C2:C13="総務部")*(FILTER_データ!D2:D13>=5))

複数の条件でフィルターをかける場合(3つ)
条件を3つ設定することも可能です。
今回は、
・「部署」が「営業部」
・「勤続年数」が5年以上
・「雇用形態」が「正社員」
を条件として、データを抽出しました。記載方法は以下の通りです。
=FILTER(FILTER_データ!A2:E13,(FILTER_データ!C2:C13="営業部")*(FILTER_データ!D2:D13>=5)*(FILTER_データ!E2:E13="正社員"))

あいまい条件でフィルターをかける場合

このワードが入っていたら、データを抽出したいな~
というとき、結構あると思います。
しかしFILTER関数の場合、どうやらワイルドカード(*)が使えないようで、、
あいまい条件でフィルターをかけたい場合は、FIND関数を使うと解決できます。
=FILTER(FILTER_データ!A2:E13,IFERROR(FIND("務",FILTER_データ!C2:C13),0))

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

フィルター条件に合致するものがないときにメッセージを出す場合
条件に合致するデータがないとエラーが発生しますが、エラーメッセージを表示することもできます。
以下の場合は、
・「勤続年数」が11年以上
を抽出しようとしていますが、対象データがないため、エラーが発生します。
そのため、[IF_EMPTY]欄に表示したいメッセージを入力すると、エラー発生時にメッセージを表示することができます。
※[IF_EMPTY]欄に記述がないと、「#CALC!」というエラーが表示されます。
=FILTER(FILTER_データ!A2:E13,FILTER_データ!D2:D13>=11,"対象データがありません")

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関数との連携までマスターすればさらに便利に!
使いこなして、作業効率をグングン上げていきましょう!
最後まで読んでいただき、ありがとうございました!
コメント