LEVEL 6 モダンExcelへの扉 中級
Lesson 059

FILTER関数について

練習用Excelファイル lesson059-practice.xlsx

練習用ファイルは、パソコンからダウンロードしてください。

FILTER関数について

スピル系の関数、第三弾は FILTER関数(フィルター関数) です。

これは「条件に合うデータだけを抽出する」関数です。抽出は[データ]タブのオートフィルター機能でもできますが、関数でデータを抽出するという操作ができます。

関数ライブラリ
関数ライブラリ


FILTER関数の構文

=FILTER(配列, 含む, [空の場合])

  • 配列 :抽出元のデータ範囲
  • 含む :条件式(TRUE / FALSE の配列)
  • 空の場合 :該当データがなかったときに返す値(省略可)

引数ダイアログ
引数ダイアログ


具体例

社員リストがあります。

:::excel
A1=社員名
B1=部署
C1=給与
A2=田中
B2=営業
C2=300000
A3=鈴木
B3=人事
C3=280000
A4=佐藤
B4=営業
C4=350000
A5=山田
B5=経理
C5=320000
A6=高橋
B6=営業
C6=330000
:::

営業部の社員だけ抽出」したい。

=FILTER(A2:C6, B2:B6="営業")

この式を1つのセル(たとえば E2)に書くだけで、

FILTER関数で営業部だけ抽出
FILTER関数で営業部だけ抽出

このように、3行分のデータがスピルで一気に表示 されます。


数式の意味

=FILTER(A2:C6, B2:B6="営業")

  • A2:C6 :抽出元のデータ全体(3列)
  • B2:B6="営業" :条件式(B列が "営業" か)

これは、内部的には、

B2="営業" → TRUE
B3="営業" → FALSE
B4="営業" → TRUE
B5="営業" → FALSE
B6="営業" → TRUE

このような TRUE / FALSE の配列 を作って、TRUE になった行だけを返す、という動きをしています。


複数条件で抽出

複数条件にしたい場合、論理演算子 を使います。

AND(両方満たす)

営業 かつ 給与30万以上」を抽出:

=FILTER(A2:C6, (B2:B6="営業")*(C2:C6>=330000))

*(掛け算)」で AND を表現します。

FILTER の AND条件
FILTER の AND条件

OR(どちらか満たす)

営業 または 人事」を抽出:

=FILTER(A2:C6, (B2:B6="営業")+(B2:B6="人事"))

+(足し算)」で OR を表現します。

これは少し特殊な書き方ですが、Excel が TRUE を 1、FALSE を 0 として扱うことを利用しています。

FILTER の OR条件
FILTER の OR条件

  • AND(掛け算):1×1=1(TRUE)、1×0=0(FALSE)、0×0=0(FALSE) → 両方が1のときだけ1
  • OR(足し算):1+0=1(TRUE)、0+0=0(FALSE)、1+1=2(TRUE扱い) → どちらかが1なら1以上

掛け算は「両方そろわないと0」、足し算は「片方でも1なら1以上」。「かつ」は厳しい掛け算、「または」は緩い足し算、と覚えると感覚的に分かりやすいです。


「空の場合」の処理

条件に合うデータがなかったとき、デフォルトでは #CALC! (カルク)エラーが返ります。

#CALCエラー
#CALCエラー

これを避けるには、3つ目の引数で 代替値 を指定します。

=FILTER(A2:C6, B2:B6="開発", "該当なし")

「開発部」がないなら、「該当なし」と表示されます。

該当なし
該当なし


オートフィルターとの違い

似た機能に オートフィルター がありますが、FILTER関数とは性質が違います。

オートフィルターFILTER関数
操作方法クリック中心数式
元データ隠れる(表示が変わる)そのまま
結果元データに上書き別の場所にスピル
自動更新手動で再フィルター自動更新
複数条件制限あり自由

オートフィルターは「一時的に絞り込んで見る」用、FILTER関数は「別の場所に抽出結果を表示する」用、と使い分けるといいでしょう。

LEVEL 8 にオートフィルターがありますので、そのときまたFILTER関数と照らし合わせてみてください。


SORTと組み合わせる

FILTER で抽出した結果を、さらに 並び替え したい、というケースもあります。

=SORT(FILTER(A2:C6, B2:B6="営業"), 3, -1)

営業部だけ抽出して、3列目(給与)で降順に並び替え」という処理。

これも1つの式でできるのが、新世代Excelの素敵なところです。


ピボットテーブルとの使い分け

集計したい」ならピボットテーブル、「抽出したい」なら FILTER関数、と使い分けると良いです。

  • ピボットテーブル :集計(合計、平均など)、クロス集計
  • FILTER関数 :絞り込み、抽出

両方の機能を持つ場合もあるので、状況に応じて選んでください。


まとめ

  • FILTER関数で、条件に合うデータを抽出
  • 構文:=FILTER(配列, 含む, [空の場合])
  • AND は \*、OR は + で表現
  • 結果はスピルで広がる
  • Microsoft 365 / Excel 2021 以降で利用可能

抽出系の処理が、今までと 比較にならないほど楽になる 関数です。


ショートカット

※このレッスンに対応するショートカットはありません。

次のLessonへ Lesson 060 TRANSPOSE関数について