FILTER関数で必要なデータだけを自動抽出する方法

FILTER関数で必要なデータだけを自動抽出する方法 IT

FILTER関数とは?「必要な行だけ抜き出す」を自動化できる基本機能

Excelで「この条件に合う人だけ一覧にしたい」「今月分だけ抜き出して別シートに貼りたい」と思ったとき、これまではフィルターをかけて、表示された行をコピーして…という手作業が定番でした。ですがこの方法、更新のたびに同じ作業が発生し、うっかり漏れや貼り間違いも起きがちです。

そこで役立つのがFILTER関数です。FILTER関数は、指定した条件に合うデータだけを自動で抽出して表示してくれる関数。しかも抽出結果は「値を返す」だけでなく、行(レコード)ごとにまとまって返してくれるので、一覧表の作成に強いのが特徴です。

最大のポイントは、FILTER関数がスピル(結果が複数セルに自動的に広がる仕組み)に対応していること。つまり、結果件数が3件でも300件でも、貼り付け先の表をいちいち調整する必要がありません。元データが追加・更新されると、抽出結果も自動で追従します。

  • 置き換えられる作業:オートフィルター → コピー → 別表に貼り付け
  • 得られるメリット:更新が自動/手作業ミスが減る/報告用の一覧が作りやすい

例えば、営業リストから「担当=自分」の案件だけを抜き出して進捗管理表を作る、勤怠データから「遅刻フラグ=TRUE」の人だけを抽出して注意リストを作る、といった場面で効果を発揮します。抽出結果は表としてそのまま使えるので、集計やグラフの元データにもなります。

ただし注意点もあります。FILTER関数はMicrosoft 365やExcel 2021以降などの「動的配列」に対応したExcelで利用できる機能です(古いバージョンでは使えません)。また、抽出結果が広がる範囲に既に値が入っていると、表示できずエラーになります。とはいえ、運用ルールさえ押さえれば、手作業の抽出作業をほぼゼロにできます。

次章では、FILTER関数を最短で使い始めるために、基本の書き方(構文)と、まず試すべき超シンプルな例を紹介します。

まずは最短で使う|FILTER関数の書き方(構文)と超シンプル例

FILTER関数は「抽出条件さえ書ければ即戦力」です。まずは構文を押さえましょう。

=FILTER(配列, 含む, [空の場合])
  • 配列:抽出したい表(範囲)
  • 含む:残したい行がTRUEになる条件(論理式)
  • 空の場合:条件に合うデータが0件だったときに表示する文字(省略可)

ポイントは2つ。「配列」は返したい列まで含めること、そして「含む」は行数が一致する縦の判定列になっていることです(ここがズレるとエラーの原因になります)。

超シンプル例として、A1:C6に下のような表があるとします。

氏名 部署 ステータス
佐藤 営業 対応中
鈴木 開発 完了
田中 営業 対応中
伊藤 人事 未着手
高橋 営業 完了

「部署が営業の行だけ」を別場所に一覧化したいなら、次の式でOKです。

=FILTER(A2:C6, B2:B6="営業", "該当なし")

これで、部署が「営業」の行だけが行ごと抽出されます。該当データが0件のときは、スピル範囲に「該当なし」と表示されるので、#CALC!などで止まりません。

また、「ステータスが完了の人だけ」を出すなら条件部分を差し替えるだけ。

=FILTER(A2:C6, C2:C6="完了", "該当なし")

慣れるまでは、FILTER(返したい範囲, 判定に使う列=”条件”)の型で覚えると速いです。

最後に運用のコツを1つ。FILTERの結果はスピルで広がるので、抽出結果の右・下に余計な値を置かないのが鉄則です(置くと結果が広がれずエラーになります)。抽出用のスペースを一段確保しておくと、日々の更新が一気にラクになります。

実務で使える条件指定|複数条件(AND/OR)・空白除外・部分一致のコツ

基本形が分かったら、次は「現場あるある」な条件指定です。FILTER関数は条件(含む)の作り方さえ覚えると、一気に実務レベルに化けます。

複数条件(AND):全部満たす行だけを出す

「部署=営業」かつ「ステータス=対応中」など、両方OKの行だけ残したいときは、条件同士を「*(掛け算)」でつなぎます。TRUE=1 / FALSE=0として扱われるため、両方TRUEのときだけ1になります。

=FILTER(A2:C6, (B2:B6="営業")*(C2:C6="対応中"), "該当なし")

ポイントは条件を()で囲むこと。読みやすさも上がり、ミスが減ります。

複数条件(OR):どちらか満たせばOK

「営業 または 人事だけ」など、どちらか一方でも当てはまればOKなら「+(足し算)」です。どちらかがTRUEなら1以上になります。

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

ちなみに「営業または対応中」のように、列をまたいだORも同じ書き方でいけます。

=FILTER(A2:C6, (B2:B6="営業")+(C2:C6="対応中"), "該当なし")

空白を除外:未入力を弾いて“使えるデータだけ”にする

実務データは空白が混ざりがちです。例えば「氏名が空白の行を除外」したいなら、空白でない条件を入れるだけ。

=FILTER(A2:C6, A2:A6<>"", "該当なし")

さらに「営業の中で、ステータスが空白じゃないものだけ」ならANDで組み合わせます。

=FILTER(A2:C6, (B2:B6="営業")*(C2:C6<>""), "該当なし")

部分一致:キーワードを含む行を拾う(検索っぽく使う)

「メモ列に“至急”が含まれるものだけ」など、完全一致ではなく部分一致で抽出したい場面も多いです。そこで使うのがSEARCH(またはFIND)

SEARCHは見つかると位置(数字)を返し、見つからないとエラーになります。これをISNUMBERでTRUE/FALSEに変換してFILTERに渡します。

=FILTER(A2:C6, ISNUMBER(SEARCH("対応", C2:C6)), "該当なし")
  • SEARCH:大文字小文字を区別しない(日本語なら意識不要なことが多い)
  • FIND:大文字小文字を区別する

「入力セルE1のキーワードを含む行だけ」みたいにすると、検索窓っぽく運用できます。

=FILTER(A2:C6, ISNUMBER(SEARCH(E1, C2:C6)), "該当なし")

この章のまとめです。ANDは「*」ORは「+」空白除外は<>””部分一致はISNUMBER(SEARCH())。この4つを押さえるだけで、FILTERは「ただの抽出」から実務の自動リスト作成ツールになります。

よくあるエラーと解決策|#CALC!/#N/A対処、範囲ズレ、データ追加に強くする方法

FILTER関数は便利な反面、最初に詰まりやすいのが「エラー」。ただ、原因パターンはだいたい決まっています。ここでは実務でよく出るものを、その場で直せる形でまとめます。

#CALC!(計算できません)/「結果がありません」系の対処

条件に合うデータが0件だと、FILTERはエラー(#CALC!)になりがちです。これを防ぐのが第2引数ではなく、第3引数の「空の場合」

=FILTER(A2:C100, B2:B100="営業", "該当なし")

これだけで「0件」のときも止まらず、報告用シートでも見栄えが崩れません。運用するなら第3引数は基本入れる、くらいでOKです。

#N/Aが混ざって抽出が壊れるとき(検索・参照の副作用)

FILTER自体というより、条件に使っている列にVLOOKUP/XLOOKUP等の#N/Aが混ざると、判定が崩れたり見た目が悪くなります。対策は2つ。

  • 条件列側でIFNA/IFERRORを巻いておく
  • FILTERの条件側でエラーをFALSE扱いにする

たとえば部分一致(SEARCH)が「見つからない=エラー」を返す場合は、こうすると安定します。

=FILTER(A2:C100, IFERROR(ISNUMBER(SEARCH(E1, C2:C100)), FALSE), "該当なし")

範囲ズレ(行数不一致):「配列」と「含む」の高さが違う

いちばん多い初歩ミスがこれです。FILTERは、返す範囲(配列)と判定範囲(含む)の行数が同じでないと動きません。

× =FILTER(A2:C100, B2:B99="営業")  ←1行ズレ

困ったら、まず配列の開始行と含むの開始行、そして終了行が揃っているかを確認しましょう。表のヘッダー行を含める/含めないも混在しがちなので、抽出対象はデータ行だけ(例:2行目以降)に統一すると事故が減ります。

スピル関連のエラー:抽出結果の右下に値がある

FILTERの結果はスピルで広がるため、出力先の右や下に値があると「広がれない」状態になります。対策はシンプルで、抽出結果用に余白エリアを確保すること。報告用シートなら「抽出結果ブロック」を最上段に置き、下は別セクションに分けると安定します。

データ追加に強くする:固定範囲をやめて「テーブル」or全列参照にする

日々行が増えるデータなら、A2:C100のような固定範囲だと、100行を超えた瞬間に抽出漏れします。おすすめはExcelのテーブル化(Ctrl+T)です。テーブルなら行が増えても自動で範囲が伸びます。

=FILTER(案件表[[氏名]:[ステータス]], 案件表[部署]="営業", "該当なし")

「とりあえず早く」なら全列参照もありますが、重くなりやすいので、実務ではテーブル運用が一番ラクで安全です。

ここまでのエラー対処を押さえると、FILTERは「動いたり動かなかったりの関数」ではなく、更新に強い自動抽出の仕組みになります。次章では、その抽出結果をさらに使いやすくするために、並べ替え・重複排除・他シート連携まで一気に自動化していきます。

運用をラクにする応用|並べ替え・ユニーク化・他シート連携で“抽出→報告”まで自動化

FILTERで「必要な行だけ出す」までできたら、次は報告に使える形に整えるフェーズです。毎回「並べ替え→重複削除→別シートへ貼り付け」をやっているなら、ここを関数でつなぐだけで作業時間が一気に減ります。

抽出結果を自動で並べ替える:FILTER × SORT

たとえば「営業だけ抽出した一覧を、ステータス順(または氏名順)に並べたい」なら、FILTERの外側をSORTで包みます。

=SORT(FILTER(A2:C100, B2:B100="営業", "該当なし"), 1, 1)

上は抽出した表を1列目(氏名)で昇順に並べ替える例です。並べ替えたい列を変えたいなら「1」の部分を2(部署)や3(ステータス)にするだけ。抽出条件が変わって件数が増減しても、自動で並びが整うので、報告用の見た目が安定します。

重複をなくして「担当者リスト」などを作る:FILTER × UNIQUE

実務だと「営業の担当者名だけ一覧にして、選択肢(ドロップダウン)に使いたい」など、ユニークな値だけ欲しい場面が多いです。その場合はUNIQUEを組み合わせます。

=UNIQUE(FILTER(A2:A100, B2:B100="営業", "該当なし"))

さらに「空白を除外して、並べ替えまで済ませる」なら、こうすると運用がラクです。

=SORT(UNIQUE(FILTER(A2:A100, (B2:B100="営業")*(A2:A100<>""), "該当なし")))

これで「営業の担当者だけ」「空白なし」「重複なし」「昇順」が1発。人が増減しても、リストは勝手に更新されます。

他シート連携で“抽出→報告”を完結させる

FILTERは別シートのデータも普通に参照できます。たとえば、元データが「データ」シート、報告用が「報告」シートなら、報告シート側にこう書くだけ。

=FILTER(データ!A2:C100, データ!B2:B100="営業", "該当なし")

おすすめは、報告シートに条件セル(例:B1に部署名)を用意して「選んだ条件で報告が切り替わる」形にすることです。

=SORT(FILTER(データ!A2:C100, データ!B2:B100=$B$1, "該当なし"), 3, 1)

これなら、B1を「営業→開発→人事」と変えるだけで、抽出から並べ替えまでが自動で追従。“抽出して貼る”が不要になり、報告作業が「条件を変えて確認するだけ」になります。

FILTERは単体でも便利ですが、SORT・UNIQUE・他シート参照までつなぐと、日次・週次のルーティンが仕組み化できます。次にやることはシンプルで、報告で必要な形(並び・重複・連携)を先に決めて、関数で固定すること。これができると、Excelは「作業ツール」から「自動で整う報告ツール」に変わります。

コメント

NewsTowerをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む