SORT関数とFILTER関数を組み合わせて並び替え抽出する方法

条件に合うデータを抽出した上で、さらに金額の大きい順など任意の並び順で見たいとき、結論から言うとSORT関数とFILTER関数を組み合わせることで、絞り込みと並べ替えを1つの数式で同時に行えます。この記事では基本の書き方、FILTER単体との違い、複数条件を組み合わせる際の注意点まで解説します。

目次

SORT+FILTERで絞り込みと並べ替えを同時に行う基本の書き方

基本の形は次の通りです。

=SORT(FILTER(配列,含む条件),並べ替えのキー列,並べ替え順序)

先にFILTERで条件に合う行だけを絞り込み、その結果をSORTで指定した列を基準に並べ替える、という2段構えの数式です。並べ替え順序は「1」が昇順、「-1」が降順です。

なぜFILTER単体ではなくSORTと組み合わせるのか

FILTER関数で条件に合うデータだけを抽出する方法単体では、抽出された行は元データに登場した順番のまま並びます。並び順を変えたい場合は、抽出後に手動で並べ替えるか、SORT関数で囲む必要があります。SORTはFILTERの結果(配列)をそのまま受け取れるため、抽出と並べ替えを1つの数式にまとめられます(Excel 2021・Microsoft 365以降で利用可能)。

具体例:「文具」カテゴリを金額の高い順に並べる

次のような注文データ(A1:C8)があるとします。A列が担当者、B列がカテゴリ、C列が金額です。

A(担当者) B(カテゴリ) C(金額)
2 佐藤 文具 1200
3 鈴木 雑貨 800
4 佐藤 雑貨 500
5 田中 文具 1500
6 鈴木 文具 900
7 佐藤 文具 700
8 高橋 雑貨 300

B列(カテゴリ)が「文具」の行を、C列(金額)の高い順に並べたい場合、次のように書きます。

=SORT(FILTER(A2:C8,B2:B8="文具"),3,-1)

まずB列(カテゴリ)が「文具」の行だけをFILTERで絞り込み、その結果を3列目(金額)を基準に降順(-1)で並べ替える、という意味の数式です。

絞り込まれた4行「佐藤/1200」「田中/1500」「鈴木/900」「佐藤/700」が、金額の高い順に「田中/1500」「佐藤/1200」「鈴木/900」「佐藤/700」と並び替わります。

複数条件で絞り込んでから並べ替える場合

「文具」かつ「金額1000以上」のように複数条件で絞り込みたい場合は、内側のFILTERの条件式を掛け算(*)や足し算(+)でつなぎます。

=SORT(FILTER(A2:C8,(B2:B8="文具")*(C2:C8>=1000)),3,-1)

この条件式の組み立て方はSUMPRODUCTでAND/OR条件の集計をする方法で紹介しているAND/OR条件の考え方と同じです。

よくあるエラー・注意点

  • 内側のFILTERがエラーだと外側のSORTもエラーになる: FILTERの結果が0件で#CALC!エラーになっている場合、それを受け取るSORTも同様にエラーを返します。FILTER側に「空の場合」の指定をしておくと安全です。
  • 並べ替えのキー列番号を間違えやすい: SORTの第2引数はFILTERの結果(絞り込んだあとの配列)の中での列番号です。元データ全体での列番号と混同しないよう注意しましょう。
  • 古いExcelでは使えない: SORT・FILTERともにExcel 2021・Microsoft 365以降で追加された関数です。それより古いバージョンでは#NAME?エラーになります。

まとめ

SORT関数とFILTER関数を組み合わせることで、条件による絞り込みと並べ替えを1つの数式にまとめられます。並べ替えを伴わずまず絞り込みだけを行いたい場合はFILTER関数で条件に合うデータだけを抽出する方法、重複を除いた一覧を作りたい場合はUNIQUE関数で重複を除いたリストを作る方法もあわせてご覧ください。

目次