「条件に合うデータだけを別シートに自動で抽出したい」「重複を取り除いたリストを自動で作りたい」――そうした要望に応えるのが、Excel 365(Microsoft 365)に搭載されたFILTER・UNIQUE・SORT関数です。これらはスピル(動的配列)と呼ばれる新しい仕組みを使い、数式を1セルに入力するだけで結果が自動的に複数セルへ広がります。
従来のExcelでは条件抽出のためにオートフィルタや作業列のCOUNTIF・VLOOKUPを駆使する必要がありましたが、FILTER関数一つで「条件に合う行だけを抽出したリスト」を動的に生成できます。元データが更新されれば、結果も自動で更新されます。本記事では、スピルの仕組みからFILTER・UNIQUE・SORT・SORTBYの基本構文、実務で使える組み合わせパターン、バージョン対応状況、エラー対処法まで一気通貫で解説します。
「オートフィルタを毎回かけ直すのが面倒」「重複なしのリストをいつも手で作っている」「FILTER関数を覚えたいが構文がわからない」という方はぜひ最後までご覧ください。
スピル(動的配列)とは何か:Excel 365で変わったこと
スピル(Spill)とは、Excel 365(Microsoft 365)で導入された機能で、1つのセルに入力した数式が自動的に複数のセルへ結果を展開する仕組みです。日本語では「溢れ出る」という意味から「スピル展開」とも呼ばれます。
従来のExcelでは、1つのセルに入力した数式は1つの結果しか返せませんでした(配列数式はCtrl+Shift+Enterが必要でした)。Excel 365からは、動的配列対応の関数を使うと、結果が自動的に隣接するセルへ展開されます。
| 項目 | 従来のExcel(2019以前) | Excel 365(スピル対応) |
|---|---|---|
| 複数セルへの展開 | Ctrl+Shift+Enterの配列数式が必要 | Enterだけで自動展開(スピル) |
| 条件抽出 | オートフィルタや作業列のIF・COUNTIFを組み合わせる | FILTER関数1つで実現 |
| 重複排除リスト | 重複の削除コマンドや作業列で手動処理 | UNIQUE関数1つで自動生成 |
| 自動並べ替え | 並べ替えコマンドを毎回実行 | SORT関数でリアルタイム並べ替え |
| データ更新時の反映 | 再度コマンドを実行する必要がある | 元データを変えると結果が自動更新 |
スピルが展開されたセル範囲は薄い青い枠線で囲まれます。展開先のセルは自動生成されるため、手動で編集しようとするとエラーになります。スピル範囲全体を参照する場合は、先頭セルに#を付けた表記(例: A1#)を使います。
FILTER関数の使い方:条件に合う行を自動抽出する
FILTER関数の基本構文
=FILTER(配列, 含む, [空の場合])
| 引数 | 内容 | 例 |
|---|---|---|
| 配列 | 抽出元のデータ範囲(行全体を含む) | A2:D100 |
| 含む | 条件式(TRUEの行が抽出される) | B2:B100="東京" |
| 空の場合(省略可) | 条件に合う行がないときに返す値 | "該当なし" |
FILTER関数の使用例1:単一条件で行を抽出する
A2:D20に売上データがあり、B列が「部門名」、D列が「売上金額」だとします。B列が「営業部」の行だけを抽出するには次のように入力します。
=FILTER(A2:D20, B2:B20="営業部", "該当なし")
この数式を入力したセル(例: F2)から下方向へ、条件に合う行数分だけ自動的にスピル展開されます。A~D列の全フィールドが抽出されるため、別途列を選ぶ必要はありません。
FILTER関数の使用例2:複数条件(AND)で絞り込む
複数条件をANDで組み合わせる場合は、各条件式を*(アスタリスク)でつなぎます。
=FILTER(A2:D20, (B2:B20="営業部")*(D2:D20>=100000), "該当なし")
上記は「部門が営業部」かつ「売上が10万円以上」の行を抽出します。*はブール値のAND演算として機能します(両方がTRUEの場合に1、どちらかがFALSEなら0になる)。
FILTER関数の使用例3:複数条件(OR)で絞り込む
ORで条件を組み合わせる場合は+(プラス)でつなぎます。
=FILTER(A2:D20, (B2:B20="営業部")+(B2:B20="企画部"), "該当なし")
上記は「部門が営業部または企画部」の行を抽出します。+はどちらか一方でもTRUEなら1になるOR演算として動作します。ただし両方TRUEの場合も1件として処理されます。
| 条件の組み合わせ | 演算子 | 例 |
|---|---|---|
| AND(〇かつ〇) | *(アスタリスク) | (B2:B20="東京")*(D2:D20>=10000) |
| OR(〇または〇) | +(プラス) | (B2:B20="東京")+(B2:B20="大阪") |
| NOT(〇以外) | 条件式に<>を使う | B2:B20<>"東京" |
UNIQUE関数の使い方:重複を排除したリストを自動生成する
UNIQUE関数の基本構文
=UNIQUE(配列, [列の方向], [1回だけの出現])
| 引数 | 内容 | 既定値 |
|---|---|---|
| 配列 | 重複を取り除く対象のセル範囲 | 必須 |
| 列の方向(省略可) | FALSEで行方向(縦)・TRUEで列方向(横)の重複を処理 | FALSE(縦方向) |
| 1回だけの出現(省略可) | TRUEにすると重複がある値は全て除外し「本当に1回だけ現れる値」のみ返す | FALSE(全ユニーク値) |
UNIQUE関数の使用例
B2:B20に部門名が入力されており、重複なしの部門一覧を自動生成したい場合は次の通りです。
=UNIQUE(B2:B20)
この数式を入力すると、B2:B20に含まれるユニークな部門名が縦方向にスピル展開されます。元データに新しい部門名が追加されれば、UNIQUE関数の結果も自動的に更新されます。
第3引数をTRUEにすると、リスト内に一度しか現れない値(重複がある値は除外)だけを返します。「重複がない取引先だけを抽出したい」といった場面で役立ちます。
=UNIQUE(B2:B20, FALSE, TRUE)
SORT・SORTBY関数の使い方:自動で並べ替えたリストを生成する
SORT関数の基本構文
=SORT(配列, [並べ替えインデックス], [並べ替え順序], [列の方向])
| 引数 | 内容 | 既定値 |
|---|---|---|
| 配列 | 並べ替える対象のセル範囲 | 必須 |
| 並べ替えインデックス(省略可) | 基準にする列番号(1=1列目、2=2列目…) | 1 |
| 並べ替え順序(省略可) | 1=昇順、-1=降順 | 1(昇順) |
| 列の方向(省略可) | FALSE=行方向(縦)・TRUE=列方向(横)で並べ替え | FALSE |
SORT関数の使用例
A2:D20の売上データをD列(売上金額)の降順で並べ替えたリストを生成するには次の通りです。
=SORT(A2:D20, 4, -1)
第2引数の「4」はD列(配列内の4列目)を基準にし、第3引数の「-1」は降順を指定します。元データを変更しても、SORT関数の結果は自動的に再並べ替えされます。
SORTBY関数:別の基準列・複数キーで並べ替える
SORT関数は「並べ替える範囲の中の列」を基準にしますが、SORTBY関数では並べ替え範囲の外にある列を基準にしたり、複数のキーを指定したりできます。
=SORTBY(配列, 基準配列1, [順序1], [基準配列2, 順序2], ...)
例えば、A2:C20の範囲をE2:E20の評価スコアを基準に降順で並べ替えるには次の通りです。
=SORTBY(A2:C20, E2:E20, -1)
並べ替えの基準列(E列)は出力範囲(A~C列)に含まれていなくてもよく、表示したくない補助列でのソートが可能です。複数キー(部門順→売上降順)でも次のように書けます。
=SORTBY(A2:D20, B2:B20, 1, D2:D20, -1)
実務で使える組み合わせパターン
パターン1:条件抽出して売上順に並べ替える
「営業部のデータだけを売上金額の高い順に並べて表示する」には、FILTER関数とSORT関数を組み合わせます。
=SORT(FILTER(A2:D20, B2:B20="営業部"), 4, -1)
内側のFILTERが営業部の行を抽出し、外側のSORTがD列(4列目)を降順に並べ替えます。フィルタと並べ替えを別々に手作業で行っていた処理が、1つの数式でリアルタイムに完了します。
パターン2:重複なし部門リストを昇順で生成する
ドロップダウンリスト用に「重複なしかつ五十音順に並んだ部門リスト」を自動生成するには次の通りです。
=SORT(UNIQUE(B2:B20))
UNIQUEで重複を排除したリストをSORT(既定値の昇順)で並べ替えます。元データのB列に新しい部門名が追加されると、このリストも自動更新されます。入力規則のリスト範囲をスピル参照(例: =$F$2#)にしておくと、ドロップダウンも動的に追従します。
パターン3:上位N件のみ取り出す
売上上位5件のデータだけを表示したい場合、SORT関数で降順に並べた結果からTAKE関数で先頭5行を取り出します。
=TAKE(SORT(A2:D20, 4, -1), 5)
TAKE関数はExcel 365の2022年以降の更新で追加された関数です。第2引数に正の数を指定すると先頭からN行、負の数を指定すると末尾からN行を取り出せます。使用前にExcel 365のバージョン(ビルド番号)を確認してください。
パターン4:スピル範囲への参照(#演算子)
FILTER・UNIQUE・SORTの結果をほかの数式から参照する際は、スピル先頭セルに#を付けたスピル参照演算子を使います。
| 参照の書き方 | 意味 |
|---|---|
| F2# | F2セルからスピル展開された全範囲を参照 |
| COUNTA(F2#) | スピル展開された件数を動的にカウント |
| SUM(F2#) | スピル展開された数値の合計 |
例えばF2セルに=UNIQUE(B2:B20)が入力されてスピル展開されているなら、=COUNTA(F2#)でユニーク件数を動的に取得できます。スピル結果の件数が変わってもCOUNTAは自動で追従します。
バージョン別対応状況:どのExcelで使えるか
| 関数名 | Excel 365(Microsoft 365) | Excel 2021 | Excel 2019 | Excel 2016以前 |
|---|---|---|---|---|
| FILTER | 使用可 | 使用可 | 使用不可 | 使用不可 |
| UNIQUE | 使用可 | 使用可 | 使用不可 | 使用不可 |
| SORT | 使用可 | 使用可 | 使用不可 | 使用不可 |
| SORTBY | 使用可 | 使用可 | 使用不可 | 使用不可 |
| SEQUENCE | 使用可 | 使用可 | 使用不可 | 使用不可 |
| TAKE / DROP | 更新版で使用可 | バージョンによる | 使用不可 | 使用不可 |
これらの動的配列関数はExcel 2019以前では利用できません。職場で共有するファイルに使用する場合は、共有相手のExcelバージョンを必ず確認してください。Excel 2019以前の環境で数式を開くと#NAME?エラーが表示されます。
Excel 365(Microsoft 365サブスクリプション)は機能が随時更新されるため、同じ365でも月次更新チャネルか半期チャネルかによってTAKE・DROPなどの関数が使えない場合があります。「ファイル」→「アカウント」→「Excelのバージョン情報」でビルド番号を確認してから使用してください。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| #SPILL! | スピル展開先のセルに既存データがある | 展開先の範囲を空白にしてから数式を入力する |
| #CALC! | FILTER関数の条件に合う行が0件で「空の場合」引数が省略されている | 第3引数に「該当なし」等の値を指定する |
| #NAME? | 関数名が認識されていない(旧バージョンのExcel) | Excel 365またはExcel 2021に更新する |
| #VALUE! | FILTER・UNIQUEの引数の行数が一致していない | 第1引数(配列)と第2引数(条件)の行数が同じになるよう範囲を揃える |
| スピルが更新されない | 計算方法が手動になっている | 「数式」タブ→「計算方法の設定」→「自動」に切り替える |
#SPILL!エラーが最も多く発生します。スピル展開先のどこかのセルにデータや目に見えないスペース文字が入っていると展開できません。エラーセルをクリックすると「スピルを妨げているセル」を示す青い点線が表示されるので、そのセルを空白にしてください。
MOS Excel試験との関係:試験で問われるか
FILTER・UNIQUE・SORT関数は現時点(2026年)のMOS Excel 365試験の出題範囲に含まれていません。MOS試験は「Office製品の基本操作スキル」の測定を目的としており、スピル関数などの365固有の高度な関数は採点対象外です。
ただし、動的配列関数を理解していることはExcelの実務活用において大きなアドバンテージになります。MOS資格取得後に実務でExcelを使う段階で、FILTER・UNIQUE・SORTを使いこなすことで業務効率が大幅に向上します。
| 項目 | MOS試験での扱い | 実務での重要度 |
|---|---|---|
| FILTER関数 | 出題範囲外 | 高(条件抽出を自動化) |
| UNIQUE関数 | 出題範囲外 | 高(リスト自動生成) |
| SORT関数 | 出題範囲外 | 高(並べ替えの自動化) |
| オートフィルタ(条件抽出) | MOS試験に出題される | 高(広く使われる) |
| 並べ替えコマンド | MOS試験に出題される | 高(広く使われる) |
MOS試験の学習中は、オートフィルタや並べ替えコマンドの操作を確実にマスターすることを優先してください。FILTER・UNIQUE・SORTはMOS資格取得後に「次のステップ」として習得するとスムーズです。
まとめ:FILTER・UNIQUE・SORTで動的なExcel業務を実現する
本記事で解説したポイントをまとめます。
- スピル(動的配列):1セルの数式が自動的に複数セルに展開される仕組み。Excel 365 / 2021で使用可能
- FILTER関数:条件に合う行だけを自動抽出。AND条件は*、OR条件は+で組み合わせる
- UNIQUE関数:重複なしのリストを自動生成。第3引数をTRUEにすると本当に1回しか現れない値のみ返す
- SORT関数:指定列で昇順・降順に並べ替えたリストを自動生成。SORTBYなら範囲外の列も基準にできる
- 組み合わせ:FILTER+SORTで「条件抽出→自動並べ替え」、SORT+UNIQUEで「重複なし昇順リスト」を1数式で実現
- スピル参照(#演算子):F2#の形でスピル結果全体を参照でき、COUNTA・SUMなどと組み合わせて動的な集計が可能
- バージョン制限:Excel 2019以前では使用不可。共有ファイルへの使用前にバージョン確認が必須
- MOS試験との関係:現時点では出題範囲外だがMOS資格取得後の実務スキルアップに最適
FILTER・UNIQUE・SORTを活用することで、「手作業でフィルタをかけて別シートに貼り付ける」「重複を手動で削除する」「並べ替えのたびにコマンドを実行する」といった繰り返し作業から解放されます。
動的配列関数の基本を習得したら、SEQUENCE関数(連番リストの自動生成)やXLOOKUP関数との組み合わせなど、さらに高度なスピル活用にもチャレンジしてみてください。
