今回はExcelワークシート関数の新関数であるSORT関数とSORTBY関数を紹介します。
SORT関数
SORT関数はサブスクリプションのOfficeや、購入型のOffice2020以降で使用できます。SORT関数は配列またはセル範囲を昇順または降順で並べ替えるために使用されます。
この関数の構文は次のとおりです。
SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
これだけではイメージができないと思いますので、詳しく説明します。今回は以下の元データを使用します。

この元データから、2020年のデータだけを抽出した上で、販売価格(合価)で降順に並び替えたテーブルを作成してみます。まずは別シートに列名だけコピペします。

次にFILTER関数を使って2020年のデータだけを抽出します。スピル機能により、A2セルのみに数式を入力するだけで済みます。受注日については書式が日付になっていないようですが、今回は困らないのでこのまま進めます。

なお、FILTER関数及びスピル機能について以下の記事を参照ください。
ここでようやくSORT関数を使います。SORT関数の構文を復習すると以下の通りでした。
SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
この”配列”にFILTER関数の結果をそのまま入れてみます。そして、[並べ替えインデックス]は何列目を基準に並び替えるかを意味しますので、今回はI列となる”9″を、[並べ替え順序]は今回は降順とするので”-1″とします。
ちなみに、[並べ替えインデックス]は基準が1列目(今回で言うA列)なら省略可能、[並べ替え順序]も昇順であれば”1″ですがこれが省略可能となっています。また[並べ替え基準]は行方向で並び替えるか列方向で並び替えるかを指定しますが、行方向の場合は省略可能なので今回は省略します。

意図した通り、販売価格の降順で並び替えできました。構文の作り方は以下のようになっています。

もう1つ例を出します。今度は受注日で降順に並び替えてみましょう。まずは受注日の書式を日付データに変更します。


SORTBY
SORTBY関数もSORT関数と同じく、サブスクリプションのOfficeや購入型のOffice2020以降で使用でき、配列またはセル範囲を昇順または降順で並べ替えるために使用されます。
SORT関数との違いは、SORTBY関数の場合は複数の列に基づいた並び替えを実行できることです。SORTBY関数の構文は以下の通りです。
=SORTBY(配列, [並べ替えインデックス1], [並べ替え順序1], [並べ替えインデックス2], [並べ替え順序2]…)
こちらも具体的に見てみましょう。以下のように、クラス名・名前・点数の表があるとします。この表を、SORTBY関数を用いてクラスごとに点数の高い順に並び替えるタスクを考えます。

今回のタスクでは、以下の優先順位で並び替えをします。
- [クラス]で昇順
- [合計点数]で降順
これをSORTBY関数の構文で表現すると以下のようになります。
=SORTBY(元データ,[クラス]列,昇順,[合計点数]列,降順)
これを実行すると以下のようになります。

意図した通り、各クラスが点数の高い順で並んでいることがわかります。

コメント