Menu

SORT関数とSORTBY関数の使い方: 数式で並べ替える

=SORT(A2:C7,3,-1)は、表A2:C7を3列目で大きい順に並べ替えて返し、データが変わるたびに並べ替え直します。SORTBYは複数の列やユーザー設定の順番を含め、どんな範囲を基準にしても並べ替えられます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=SORT(A2:C7,3,-1)は、表A2:C7を3列目の売上で大きい順に並べ替えて返します。元の表はそのままで、並べ替えたコピーが数式のセルからスピルし、数値が変わると並べ替え直されます。C7を300に変えると、Finnがいちばん上に移ります。

売上の大きい順
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120CaraNorth200
3BenSouth80DanEast150
4CaraNorth200AnnNorth120
5DanEast150EveSouth95
6EveSouth95BenSouth80
7FinnNorth60FinnNorth60
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

SORT関数の構文

=SORT(array, [sort_index], [sort_order], [by_col])
  • array(配列)は並べ替えて返す範囲です。
  • sort_index(並べ替えインデックス)は、arrayの中で基準にする列の番号です。既定は1です。
  • sort_order(並べ替え順序)は、昇順なら1(既定)、降順なら-1です。
  • by_col(並べ替え基準)は、行を並べ替えるならFALSE(既定)、列を左から右へ並べ替えるならTRUEです。

SORTとSORTBYにはExcel 2021、Excel 2024、Microsoft 365のいずれかが必要で、それより古いバージョンでは#NAME?になります。Googleスプレッドシートにも両方ありますが、SORTは列番号とTRUEかFALSEを組で受け取ります。

昇順では、数値が先に、次に文字列がAからZの順に、その後にFALSEとTRUEが並びます。文字列は大文字と小文字を区別せずに比べます。arrayの空のセルは、結果では0として返ります。

Excelでアルファベット順に並べる

リストをその場で並べ替えるには、リストのどれかのセルをクリックして データ > 昇順(または降順)を選びます。リストの隣に列があると、Excelは各行がまとまったまま表全体を並べ替えます。2つ以上の列やユーザー設定リストで並べ替えるには、データ > 並べ替え を使います。

元の順番を残したまま、自動で更新されるアルファベット順のコピーを作るには、ほかの引数なしでSORTを使います:

名前をAからZの順に
C2
ABC
1NameA to Z
2MiaAnn
3BenBen
4ZoeCara
5AnnDan
6LeoLeo
7CaraMia
8DanZoe
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

A3にAbeと入力すると、Abeが最初に表示されます。=SORT(A2:A8,,-1)はZからAの順になります。2つのカンマでsort_indexを飛ばしています。重複のないリストをアルファベット順にするには、UNIQUEの結果を並べ替えます:=SORT(UNIQUE(A2:A8))(UNIQUEを参照)。

SORTBY: 返さない列を基準に並べ替える

SORTは、返す範囲の中の列でしか並べ替えられません。SORTBYは並べ替えの基準を別の範囲として受け取るので、名前だけを売上の順に返せます:

売上の順に並べた名前
E2
ABCDE
1NameRegionSalesBy sales
2AnnNorth120Cara
3BenSouth80Dan
4CaraNorth200Ann
5DanEast150Eve
6EveSouth95Ben
7FinnNorth60Finn
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

結果はCara、Dan、Ann、Eve、Ben、Finnです。構文は=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], ...)です。各by_arrayはarrayと同じ行数でなければならず、そうでないとSORTBYは#VALUE!を返します。

上位3件なら、結果の最初の行を取り出します。=TAKE(SORTBY(A2:A7,C2:C7,-1),3)はCara、Dan、Annを返します。TAKEにはMicrosoft 365かExcel 2024が必要で、Excel 2021では=INDEX(SORTBY(A2:A7,C2:C7,-1),SEQUENCE(3))を使います。

複数の列で並べ替える

SORTBYには、段階ごとに基準と順序の組を1つずつ渡します。次の数式は地域をAからZの順に並べ、各地域の中では売上を大きい順に並べます:

地域をAからZ、次に売上の大きい順
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120DanEast150
3BenSouth80CaraNorth200
4CaraNorth200AnnNorth120
5DanEast150FinnNorth60
6EveSouth95EveSouth95
7FinnNorth60BenSouth80
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Eastが最初で、次にNorthの3行がCara(200)、Ann(120)、Finn(60)の順に並び、その後にSouthが続きます。SORTでも列番号と順序の配列で同じことができますが、SORTBYのほうが読みやすくなります:

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

自分で決めた順番で並べ替える

アルファベット順が欲しい順番とは限りません。地域をNorth、East、Southの順に並べるには、MATCHで各地域をそのリストの中の位置に変え、その位置で並べ替えます:

North、East、Southの順
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200FinnNorth60
5DanEast150DanEast150
6EveSouth95BenSouth80
7FinnNorth60EveSouth95
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

MATCHはNorthに1、Eastに2、Southに3を返し、SORTBYはその数値で並べ替えます。基準が同じ行は元の順番を保つので、Northの行はAnn、Cara、Finnのままです。同じ方法で、月や曜日を名前で並べ替えられます。MATCHの中にカレンダーの順に並べておきます。リストにない地域はMATCHが#N/Aを返します。そうした行を最後に回すには、基準にIFERROR(MATCH(B2:B7,{"North","East","South"},0),99)を使います。

練習: 売上の順に並べた名前

やってみよう
E2
ABCDE
1NameRegionSalesBy sales
2AnnNorth120
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: E2で、名前だけを売上の大きい順に返してください。

SORT関数と並べ替えボタン

どちらも並べ替えますが、役割が違います:

データ > 並べ替えSORTとSORTBY
元の表を変える変える変えない、結果は新しいセルに入る
データが変わると更新されるされない、もう一度並べ替えるされる
Excel 2019以前で使える使える使えない
結果をセルごとに編集できるできるできない、1つの数式だから
ほかの数式で囲めるできないできる、たとえば=TAKE(SORT(A2:C7,3,-1),3)

表を一度整えるならボタンを使います。データが変わっても並べ替えた状態を保たなければならないレポートやダッシュボードには関数を使います。数式の下や右のセルが空でないと、関数は並べ替えたリストの代わりに#SPILL!を表示します。そのセルを空にすると表示されます(#SPILL!エラーを参照)。

よくある質問

Excelで数式を使ってデータを並べ替えるには?

SORTを使います。=SORT(A2:C7,3,-1)は、A2:C7を3列目で大きい順に並べ替えて返します。最後の2つの引数を省いた=SORT(A2:A8)は、1列目を基準に小さい順(文字列ならAからZの順)に並べ替えます。

SORTとSORTBYの違いは何ですか?

SORTは、返す範囲の中の列を番号で選んで並べ替えます。SORTBYは、返さない範囲も含めて、指定したどんな範囲を基準にしても並べ替えられます。=SORTBY(A2:A7,C2:C7,-1)は名前だけを売上の順に返します。SORTBYは複数の並べ替えの基準もそのまま受け取れます。

Excelでリストをアルファベット順に並べるには?

リストのセルを選択して データ > 昇順 をクリックすると、その場で並べ替わります。元のリストを残して、更新される並べ替えたコピーが欲しいなら、空いているセルに=SORT(A2:A8)と入力します。ZからAなら=SORT(A2:A8,,-1)です。

数式で2つの列を基準に並べ替えるには?

SORTBYに基準と順序の組を2つ渡します。=SORTBY(A2:C7,B2:B7,1,C2:C7,-1)は地域をAからZの順に並べ、各地域の中では売上を大きい順に並べます。

SORTとSORTBYが使えるExcelのバージョンは?

Excel 2021、Excel 2024、Microsoft 365です。Excel 2019以前では#NAME?になるので、データタブの「並べ替え」ボタンで並べ替えます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める