Excelで表から特定のデータだけを抜き出したいとき、「FILTER関数」がとても便利です。
従来のVLOOKUPやIF関数では難しかった「複数条件での絞り込み」や「除外条件」なども、FILTER関数ならシンプルな式で実現できます。
しかし、いざ使おうとすると「なぜかうまく動かない」「複数条件をどう書けばいいの?」と戸惑う方も多いはず。
また、「FILTER関数が使えないExcelではどうすればいいの?」という疑問を持つ方もいるかもしれません。
この記事では、FILTER関数の基本的な使い方から、複数条件・別シート・スピルエラーなどの応用テクニックやトラブル対処法まで、初心者の方にも分かりやすく解説していきます。
実務にすぐ役立つ使い方も紹介しているので、ぜひ参考にしてください。
FILTER関数の基本と使い方
FILTER関数とは?どんなときに使うの?
FILTER関数は、Excelにおいて**「条件に合ったデータだけを取り出す」**ための関数です。
特に、一覧表やデータベースの中から、ある条件に一致する行だけを抜き出したいときに活躍します。
たとえば「営業部に所属する社員だけを抽出したい」「2024年以降の日付だけを表示したい」といった場面で、FILTER関数を使えば自動的に絞り込みが可能です。
従来のフィルター機能とは異なり、関数としてセル内に書けるため、動的にデータを抽出できるのが大きな特徴です。
基本の書き方と使用例(構文・引数の説明)
FILTER関数の基本的な構文は以下のとおりです:
=FILTER(範囲, 条件, [条件に一致しない場合の表示])
各引数の説明:
-
範囲:データを取り出したい元の範囲(例:A2:C10)
-
条件:抽出の基準となる条件(例:B2:B10=”営業部”)
-
[一致しない場合の表示]:該当するデータがなかった場合の表示内容(省略可)
使用例:
営業部の人だけを抽出する場合:
=FILTER(A2:C11, B2:B11="営業部", "該当なし")
このように、指定した条件に合う行を自動で表示してくれます。
FILTER関数はいつから使える?利用可能なExcelのバージョン
FILTER関数は、Excel 365 および Excel 2021 以降のバージョンで使用可能です。
Excel 2019やそれ以前のバージョンでは利用できないため、関数が「#NAME?」と表示される場合は、バージョンを確認してみましょう。
※Microsoft 365では常に最新の関数が利用可能なため、FILTER関数を使いたい方にはおすすめです。
よくある「使えない」原因と対処法
FILTER関数が「うまく動かない」「使えない」と感じる場合、以下のような原因が考えられます:
-
Excelのバージョンが古い(→ Excel 365または2021以降が必要)
-
抽出条件の範囲とデータの行数が一致していない
※B2:B11は部署名なので年齢である28を入力すると抽出されない。
-
空白セルや結合セルがスピルエリアに含まれている
※結果を表示させる範囲に値が入力されていると#スピル!エラーになります。
値とは画面上では表示されない” ”(スペース)や改行も含まれます。
結果表示範囲に結合セルがある場合も結果表示がうめくいかないため、#スピル!エラーとなります
-
関数の構文が間違っている(=FILTER(A2:A10, B2=”営業部”)など)
対処のポイント:
-
スピル範囲に空白セルやデータがあるとエラーになる → 該当セルを削除・移動
-
条件範囲は「列全体」ではなく「データのある範囲」にする
-
条件のセル参照が1行ずれていないか確認する
FILTER関数が使えないときの代用方法(VLOOKUPやIF関数の組み合わせ)
Excel 2019以前でFILTER関数が使えない場合は、次のような組み合わせ関数で代用することが可能です:
例1:IF関数+INDEX+SMALLの組み合わせ
条件に一致した行番号を取り出し、それに応じたデータを表示する方法です。
=IFERROR(INDEX(A:A, SMALL(IF($B$2:$B$11="営業部", ROW($B$2:$B$11)), ROW(A1))), "")
※これは配列数式のため、Ctrl+Shift+Enterが必要な場合があります(古いバージョン)。
例2:オートフィルター+コピーの手動対応
FILTER関数が使えない環境では、通常のフィルター機能を使って該当データを抽出し、別シートにコピーするという手動対応も選択肢のひとつです。
FILTER関数の応用とトラブル対策
複数条件で抽出する方法(AND・OR条件)
FILTER関数では、複数の条件を指定してデータを抽出することも可能です。
代表的なパターンは「AND条件(両方の条件を満たす)」「OR条件(いずれかの条件を満たす)」の2種類です。
■ AND条件(すべての条件を満たす)
条件を *
で掛け合わせます。
=FILTER(A2:C11, (B2:B11="営業部") * (C2:C11>=30))
→ 「営業部」かつ「年齢が30歳以上」のデータを抽出します。
■ OR条件(どちらかの条件を満たす)
条件を +
で加算します。
→ 「営業部」または「経理部」のデータを抽出します。
「含まない」条件で抽出する方法(NOTの使い方)
ある条件を**「除外」したい**場合は、「NOT(否定)」の考え方を使います。
例:「営業部以外」の人を抽出
=FILTER(A2:C11, B2:B11<>"営業部")
<>
は「等しくない(≠)」という意味です。
これにより、B列の値が「営業部」ではない行だけが表示されます。
テーブル形式・日付・部分一致などの応用例
■ テーブルとFILTER関数の相性
Excelの**テーブル機能(Ctrl+T)**を使うと、データが自動で拡張されるためFILTER関数と非常に相性が良いです。
列名で指定できるため、見やすく保守性も高くなります。
■ 日付条件で抽出する例
たとえば「今日以降の予定を抽出したい」場合:
TODAY()関数と組み合わせることで、動的に日付条件を設定できます。
■ 部分一致(「○○を含む」)の抽出
ISNUMBER
とSEARCH
関数を使うと、文字列の一部を含むかどうかで抽出できます。
=FILTER(A2:C10, ISNUMBER(SEARCH("営業", B2:B10)))
→ B列に「営業」が含まれている行をすべて抽出します。
別シートのデータをFILTERする方法
FILTER関数は別シートのデータも問題なく抽出可能です。
たとえば、Sheet2の表から「営業部」を抽出してSheet1に表示したい場合:
=FILTER(Sheet2!A2:C100, Sheet2!B2:B100="営業部", "該当なし")
※参照先のシート名と範囲を正確に指定することが大切です。
スピルや並び替えに関する注意点と対処法
■ スピルとは?
FILTER関数は**スピル(spill)**と呼ばれる仕組みで、複数の結果を自動的に縦または横に展開します。
ただし、展開先にデータがあるとエラー(#SPILL!)になるので注意が必要です。
スピルエラーを防ぐには:
-
FILTER関数を置くセルの右側・下側に十分な空白スペースを確保する
-
結合セルや手入力のデータを避ける
■ FILTER関数の結果を並び替えたいとき
FILTER関数だけでは並び替えはできません。
並び替えたい場合は SORT関数
と組み合わせましょう。
=SORT(FILTER(A2:C11, B2:B11="営業部"), 3, -1)
→ 第3列(年齢)を基準に降順で並び替えます。
まとめ:FILTER関数を使いこなして、効率よくデータ抽出!
FILTER関数は、Excelで条件に合ったデータを動的に抽出できる強力な関数です。
基本的な使い方を押さえるだけでも、日々の作業効率が大きく向上します。
今回ご紹介した内容をおさらいしましょう:
-
FILTER関数はExcel 365・2021以降で使える新しい関数
-
基本構文は「=FILTER(範囲, 条件, “該当なし”)」とシンプル
-
「AND・OR・NOT」など複数条件にも対応
-
部分一致・日付・別シートからの抽出も可能
-
スピルエラーや並び替えには注意が必要(SORT関数との併用が有効)
FILTER関数をマスターすれば、VLOOKUPやIF関数では難しかった柔軟な絞り込み処理もスムーズに実現できます。
ぜひ実務や日常のExcel作業に取り入れて、データ分析やリスト作成の効率化に役立ててください!
よくある質問(FAQ)
Q1. FILTER関数がうまく動きません。どうすればいいですか?
A. FILTER関数が動作しない主な原因は以下のとおりです:
-
Excelのバージョンが古い(Excel 365 / 2021以降で使用可能)
-
条件範囲とデータ範囲の行数が一致していない
-
抽出先にデータがあり、スピルエラーになっている
-
セル参照や構文にミスがある
まずはバージョンの確認と、スピルエリアの空きスペースをチェックしてみましょう。
Q2. FILTER関数はスマホやタブレットのExcelでも使えますか?
A. はい、Microsoft 365のアカウントでログインしていれば、モバイル版Excelアプリでも使用可能です。
ただし、機種やOSバージョンによって一部の動作に制限がある場合があるため、事前にテストしておくと安心です。
Q3. 別のシートに抽出結果を表示したいときはどうすればいいですか?
A. FILTER関数は、別シートのデータを参照することが可能です。
シート名をつけて参照すればOKです。
例:
=FILTER(Sheet1!A2:C11, Sheet1!B2:B11="営業部")
別シート”Sheet1″の元データから条件に合うデータを抽出して表示します。
Q4. FILTER関数の結果を自動で並び替えることはできますか?
A. はい、FILTER関数単体では並び替えはできませんが、SORT関数と組み合わせることで可能です。
例:
=SORT(FILTER(A2:C10, B2:B10="営業部"), 3, -1)
→ 第3列(例:年齢)を基準に降順で並び替えた結果を表示します。
Q5. FILTER関数が使えない場合、どうすれば代用できますか?
A. Excel 2019以前を使っている場合は、以下のような代替方法があります:
-
IF関数+INDEX関数+SMALL関数などを組み合わせる
-
オートフィルター機能で手動抽出してコピーする
-
Power Queryで条件抽出を行う
ただし、関数での代用はやや複雑なため、FILTER関数が使える環境にアップグレードするのがおすすめです。