SORT関数の詳細解説(Excel)

ExcelのSORT関数について詳しく解説

ExcelのSORT関数は、指定した配列を昇順または降順に並べ替える関数であり書式は以下のとおりです。

=SORT(配列, 並べ替えインデックス, 並べ替え順序, 並べ替え基準)

それぞれの引数について詳しく解説します。なお、類似関数にSORTBY関数があります。

1. 配列

「配列」は並べ替えを行う範囲を指定します。これは単一の列や行だけでなく、複数列・複数行の範囲を指定することも可能です。また、具体的なセル範囲だけでなく、テーブル範囲の指定や名前定義を使った範囲指定も可能です。

2. 並べ替えインデックス

「並べ替えインデックス」はどの列または行を基準に並べ替えるかを指定します。これには1以上の整数を指定します。省略すると最初の列または行を基準に並べ替えをします。

複数の優先キーを設定する場合は次章に解説のあるように波括弧 {} を使って配列定数の形式を採用します。

3. 並べ替え順序

「並べ替え順序」は昇順(1または省略)か降順(-1)かを指定します。これにより、数値や文字列、日付などが小さい順または大きい順に並べ替えられます。

4. 並べ替え基準

「並べ替え基準」は行で並べ替えるか列で並べ替えるかを指定します。FALSE(または省略)の場合は行で並べ替え(標準的な縦方向の並べ替え)、TRUEの場合は列で並べ替え(横方向の並べ替え)を行います。

では、具体的なサンプルを使って、これらの引数の使い方を見てみましょう。以下の表を例に取ります。

名前都道府県年齢
田中 太郎東京都25
佐藤 次郎大阪府30
山田 花子福岡県35
田中 一郎東京都40
佐藤 二郎大阪府45
山田 桜子福岡県50

この表に対して、年齢(3列目)を基準に降順(-1)に並べ替えるには、以下のように計算式を書きます。

=SORT(A2:C7, 3, -1)

ここでは、「配列」にはA2:C7を指定し、「並べ替えインデックス」には3(年齢が入っている列)を、「並べ替え順序」には-1(降順)を指定しています。結果として、年齢が高い順に並べ替えられた表が生成されます。

ExcelのSORT関数で複数の優先キーを指定する方法

ExcelのSORT関数では、複数の優先キーを指定することも可能です。これは配列定数を使用することで実現します。

配列定数とは、Excelで使用する数値や文字列などの値のリストのことで、波括弧 {} で囲むことで作成できます。値はカンマで区切ります。たとえば {1, 2, 3} は1, 2, 3の3つの値を持つ配列定数となります。

SORT関数で複数の優先キーを指定する場合、並べ替えインデックスと並べ替え順序に配列定数を使用します。例えば、都道府県(2列目)を降順に、年齢(3列目)を昇順に、名前(1列目)を昇順に並べ替える場合、以下のようになります。

=SORT(A2:C7, {2, 3, 1}, {-1, 1 ,1})

ここで、{2, 3, 1} は「都道府県(2列目)」「年齢(3列目)」「名前(1列目)」の順に並べ替えを行うことを示しています。また、{-1, 1 ,1} は「都道府県」を降順に(-1)、「年齢」を昇順に(1)、そして「名前」を昇順に(1)並べ替えることを示しています。

このように、ExcelのSORT関数を使うと、複数の優先キーを設定して柔軟な並べ替えを行うことができます。

ExcelのSORT関数で列方向の並べ替えを行う方法

ExcelのSORT関数では、通常は行方向の並べ替えが行われますが、「並べ替え基準」引数を「TRUE」に設定することで、列方向の並べ替えを行うことができます。これは、行方向にデータが伸びている表に対して特に有効な操作となります。

例えば、以下のような商品の表があるとします。

商品番号123456
種類ベッドイステーブルベッドイステーブル
価格300001000020000400001500025000

ここで、商品種類を基準に列方向の並べ替えを行いたい場合、以下のようにSORT関数を使います。

=SORT(B1:G3, 2, 1, TRUE)

ここで、「B1:G3」は並べ替える範囲、「2」は並べ替え基準となる列のインデックス(ここでは「種類」の列を指定)、「1」は昇順に並べ替えることを示し、「TRUE」は列方向の並べ替えを行うことを示します。

この結果、商品の種類がアルファベット順に並び替えられた表が得られます。

なお、この列方向の並べ替えは、一見すると「行方向の並べ替えと何が違うのか」わかりづらいかもしれません。ポイントは、元のデータがどのように配置されているか、そしてどのような結果を求めているかです。行方向の並べ替えは、通常の縦長の表に対して行を並べ替える操作で、一方、列方向の並べ替えは、横長の表に対して列を並べ替える操作となります。