条件抽出した結果をさらに並べ替えて表示する方法は?
結論
FILTER関数で条件抽出した結果をSORT関数でネストして並べ替えることができます。
詳しい解説
FILTER関数とSORT関数を組み合わせることで、条件に一致するデータを抽出し、そのまま並べ替えて表示できます。例えば `=SORT(FILTER(A2:D100, B2:B100="東京"), 4, -1)` とすることで、東京のデータのみを抽出し、4列目(売上額など)で降順に並べ替えられます。動的配列機能により、データが更新されると結果も自動的に再計算されます。この組み合わせは、条件付き集計や上位N件の抽出などで非常に便利です。
よくあるエラーと対処法
#CALC!原因: FILTER関数の条件に一致するデータが1件もない場合に発生する。
対処: FILTER関数の第3引数に代替値を指定する。例:=SORT(FILTER(A2:D100, 条件, "該当なし"), 4, -1)。ただし代替値が文字列の場合はSORT関数でエラーになる可能性があるため、IFERRORで囲むことを推奨。
#SPILL!原因: SORT(FILTER(...))の結果が展開されるスピル範囲に既存データがある。
対処: SORT関数を入力するセルの下・右方向の範囲を空にする。
執筆・検証:田中 けんた|Excel歴15年・MOS資格保持
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| 動的配列関数は未対応 | 動的配列関数は未対応 | 対応 | 対応 | 対応 |
実務での使用例
東京の売上上位5件を抽出
全国の売上データから東京支店の売上上位5件を自動表示
=TAKE(SORT(FILTER(A2:D100, B2:B100="東京"), 4, -1), 5)- FILTER関数で東京のデータのみ抽出
- SORT関数で売上額(4列目)降順に並べ替え
- TAKE関数で上位5件のみ取得
- 結果が自動的にスピルして複数セルに表示される
在庫切れ商品を商品コード順に表示
在庫が0の商品を商品コード順に一覧表示
=SORT(FILTER(A2:C100, C2:C100=0), 1, 1)