SORT関数でデータを並べ替える:Excel関数


スポンサードリンク


作成:2020/2/8,更新更新: 2023/3/13

SORT関数で引数を省略した例
SORT関数で列を並べ替える SORT関数で行を並べ替える
SORT関数を使って配列を並べ替える SORT関数を使って複数条件で並べ替える
FILTER関数を使って必要な列だけを表示する CHOOSECOLS関数を使って不連続な列を表示する

SORT関数が利用できるExcelの種類(バージョンについて)

SORT関数はExcel for Microsoft 365(サブスクリプション型)で使える関数です。
(Office365は2020/4/22からは Microsoft365となりました)
ちなみに、Excel2016(永続ライセンス版),Excel2019(永続ライセンス版)では使用できませんので、ご注意ください。
なお、2021/10/5頃から市販されている Excel2021(永続ライセンス版)でも使用できます。

Spill(スピル) SORT関数
Excel2016 × ×
Excel2019 × ×
Excel2021
Excel for Microsoft365

SORT関数(ワークシート関数)が使用できない環境の場合は、 エクセル関数の技:関数(数式)を使ってデータを並べ替える をご覧ください。
SORTBY関数の使い方は SORTBY関数で指定した範囲(配列)を対応した範囲の値に応じて並べ替える をご覧ください。

配列を並べ替えて返します   topへ
 ソート
=SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])

SORT関数の引数

 [ ] でくくられた引数は省略可能です。
配列 並べ替える範囲または配列
[並べ替えインデックス] 並べ替えの基準となる行または列を示す数値
(既定は1)
[並べ替え順序] 目的の並べ替え順序を示す数値
昇順の場合は 1 (既定)
降順の場合は -1
[並べ替え基準] 目的の並べ替え方向を示す論理値。
FALSE(既定値)の場合は、行で並べ替え
TRUE の場合は、列で並べ替え

SORT関数と並べ替え機能との違い

大文字と小文字の区別はされません。

D列はSORT関数で昇順に並べ替えています。
F列は並べ替え機能で「大文字と小文字を区別する」の設定をONにして並べ替えています。
SORT関数では大文字と小文字は区別されず、先に出てきた方が上に表示されます。
並べ替えの機能では大文字と小文字は区別され、小文字の方が先に表示されます。

ふりがな情報は使用されません。

SORT関数で並べ替えるときは「ふりがな情報」は無視され、文字コード順になります。
さらに、SORT関数で並べ替えた後の文字からはふりがな情報が欠落しています。
並べ替え機能では既定で「ふりがな情報」をもとに並べ替えられます。

SORT関数で引数を省略した例

SORT関数は引数の並べ替えインデックスを省略すると 1 が適用されます。
引数の並べ替え順序を省略すると、 1(昇順)が適用されます。
引数の並べ替え基準を省略すると、FALSE(既定値)が適用され、行で並べ替えが行われます。
つまり、引数を省略すると1列目を基準に昇順にデータが並べ替えられます。

下図のデータをNoの昇順に並べ替えます。
B C D E F G H
2 No 氏名 国語 算数 理科 社会 合計
3 6 木下 86 98 94 87 365
4 3 河合 82 77 83 88 330
5 8 佐々木 81 67 71 86 305
6 4 近藤 72 78 74 73 297
7 7 植田 68 78 75 66 287
8 1 岡田 70 65 71 77 283
9 9 桑田 62 64 61 69 256
10 5 井上 61 55 52 65 233
11 2 会田 55 61 66 48 230

数式は =SORT(B3:H11) とします。
引数の並べ替える範囲にはタイトル行を入れません。並べ替えるデータの範囲を指定します。
下図のように、No順に並べ替えができました。

テーブルを並べ替える

テーブルを使うと、数式は =SORT(テーブル1) となります。
1列目のNoが並べ替えのキーとなり、昇順に並べ替えられます。

SORT関数のメリットは、元データを修正すると、瞬時にその修正が反映されます。
B4セルを 88 に修正しました。すると、並べ替え先データの順序は瞬時に変更されました。

SORT関数で列を並べ替える

下表の成績表を使って説明します。
国語の得点を得点の大きい方から順番に並べ替えます。
J3セルに =SORT(B3:D11,3,-1) と入力しました。

並べ替える範囲は B3:D11
並べ替えインデックスは国語の列は並べ替える範囲の3列目なので 3 とします。
並べ替え順序は降順にしたいので、 -1 とします。

国語の得点の高い順に並べ替えられました。

テーブルを並べ替える

データ範囲がテーブルに変換されている場合、テーブル名は テーブル1 としています。
J3セルの数式は =SORT(テーブル1[[No]:[国語]],3,-1) となります。

氏名の昇順に並べ替えた例です。
B15セルには =SORT(B3:H11,2) と入力しています。
並べ替えにはふりがな情報は使用されず、文字コード順に並べ替えられます。
Excelの並べ替えの機能(既定)とは異なることにご注意ください。

SORT関数で行を並べ替える例

岡田さんのデータを降順に並べ替えてみます。列方向で並べ替えます。
C16セルに =SORT(C2:H3,2,-1,TRUE) と入力しました。

並べ替える範囲は C2:H3
並べ替えインデックスは並べ替える範囲の2行目を基準にするので、 2 とします。
並べ替え順序は降順にしたいので、 -1 とします。
並べ替え基準は列方向で並べ替えたいので TRUE とします。

岡田さんの得点の高い順に並べ替えられました。
(氏名は漢字なので、数値より大きくなりますので、範囲に氏名を加えてもOKな結果となっています)

SORT関数で配列を並べ替える

C16セルに =SORT(C3:H11,6,-1) と入力するだけでデータ表を並べ替えることができます。
配列にはタイトル行を除いたデータだけを指定します。C3:H11 としています。
並べ替えインデックスは合計の値を基準にしたいので、合計は配列の左から6列目なので 6 と指定します。
並べ替え順は降順としたいので -1 とします。

テーブルを並べ替える

データリストをテーブルに変換した場合、テーブル名は テーブル1 としています。
C14セルの数式は =SORT(テーブル1[[氏名]:[合計]],6,-1) とします。

SORT関数を使って複数条件で並べ替える

国語の得点が高い順で、同点なら算数の得点が高い順に並べ替えます。
成績表のデータは上記までと異なっていますので、ご注意ください。
まず、算数の得点が高い順に並べ替えます。
B14セルに =SORT(B3:H11,4,-1) と入力しています。

並べ替える範囲は B3:H11 とします。
並べ替えインデックスは並べ替える範囲の4列目(算数)を基準にするので、 4 とします。
並べ替え順序は降順にしたいので、 -1 とします。

次に、国語の得点の高い順に並べ替えます。
B25セルに =SORT(SORT(B3:H11,4,-1),3,-1) と入力します。
つまり、算数の得点に並べ替えたものをさらに、国語の得点の高い順に並べ替えます。
並べ替える範囲は SORT(B3:H11,4,-1) とします。
並べ替えインデックスは並べ替える範囲の3列目(国語の列)を基準にするので、 3 とします。
並べ替え順序は降順にしたいので、 -1 とします。

テーブルを並べ替える

データ範囲がテーブルの場合、テーブル名は テーブル1 としています。
B14セルの数式は =SORT(SORT(テーブル1,4,-1),3,-1) となります。

FILTER関数を使って必要な列(不連続な列)を表示する

上記のように、14セルの数式は =SORT(SORT(テーブル1,4,-1),3,-1) としたデータがあります。

この並べ替えたデータから、Noと氏名と合計だけを取り出します。
B14セルには =FILTER(SORT(SORT(テーブル1,4,-1),3,-1),{1,1,0,0,0,0,1}) としています。
{1,1,0,0,0,0,1} として、表示する列は 1(TRUE)、表示しない列は 0(FLASE)と前列をどちらか指定しています。

CHOOSECOLS関数を使って不連続な列を表示する

上記では配列を使って、指定した列のデータを表示しましたが、ここではちょっと意地悪な列の順番としています。
No,名前、社会、国語の順番でデータを取り出してみます。

CHOOSECOLS関数とXMATCH関数を利用しています。
CHOOSECOLS関数はExcel for Microsoft365で使用できる関数です。
B16セルの数式は
=CHOOSECOLS(
SORT(SORT(テーブル1,4,-1),3,-1),
XMATCH(B15:E15,テーブル1[#見出し]))

としています。

スポンサードリンク



よねさんのWordとExcelの小部屋 »  エクセル関数一覧表 »  SORT関数の使い方

PageViewCounter
Counter
Since2006/2/27