SORTは、範囲を並べ替えた結果を返す関数です。
メニューの「並べ替え」と違い、元の表には一切手を触れません。 別の場所に並べ替えた結果を表示するので、元データの順番が保たれます。
複数人で使うファイルでは、これが決定的な利点になります。誰かが並べ替えたせいで元の順番が失われる、という事故が起きません。
書式
=SORT(範囲, 並べ替える列1, 昇順か1, [列2, 昇順か2], ...)
| 引数 | 内容 |
|---|---|
| 範囲 | 並べ替える表 |
| 並べ替える列 | 範囲の左から何番目か(数字) |
| 昇順か | TRUE=昇順 / FALSE=降順 |
列は範囲の中での番号です。シートの列番号ではありません。範囲が C2:E10 なら、C列が1、D列が2になります。
基本の使い方
| A | B | C | |
|---|---|---|---|
| 1 | 支店 | 商品 | 売上 |
| 2 | 東京 | A | 1200 |
| 3 | 大阪 | A | 800 |
| 4 | 東京 | B | 1500 |
売上(3列目)の降順で並べます。
=SORT(A2:C4, 3, FALSE)
結果: 東京/B/1500 → 東京/A/1200 → 大阪/A/800
見出しを一緒に出すなら {} で結合します。
=SORT({A2:C100}, 3, FALSE)
または見出し行だけ別に書いて、その下にSORTを置きます。
複数のキーで並べ替える
列と順序のペアを追加していきます。
=SORT(A2:C100, 1, TRUE, 3, FALSE)
「支店の昇順、その中で売上の降順」という並びです。支店ごとに売上ランキングが作れます。
キーはいくつでも追加できます。
FILTERと組み合わせる
実務で最もよく使う形です。
=SORT(FILTER(A2:C100, A2:A100="東京"), 3, FALSE)
「東京の売上ランキング」が1つの数式で完成します。
条件を FILTER で絞り、その結果をSORTで並べる、という流れです。
上位N件だけ出す
SORTには件数を絞る機能がありません。ARRAY_CONSTRAIN で切り取ります。
=ARRAY_CONSTRAIN(SORT(A2:C100, 3, FALSE), 5, 3)
「5行 × 3列」に切り取る=上位5件です。
ただし、上位N件を出すだけなら QUERY のほうが読みやすいです。
=QUERY(A:C, "select * order by C desc limit 5", 1)
並べ替えの基準を別列で作る
「特定の順番」で並べたいことがあります。たとえばステータスを「未処理 → 処理中 → 完了」の順に並べたい場合、そのまま並べ替えても五十音順になってしまいます。
作業列に並び順の番号を出して、その列で並べ替えます。
作業列D2: =ARRAYFORMULA(IF(A2:A="", "", MATCH(A2:A, {"未処理";"処理中";"完了"}, 0)))
並べ替え: =SORT(A2:D100, 4, TRUE)
MATCH で並び順の番号を求めています。作業列は最後に非表示にすれば見た目も損ないません。
SORTNとの違い
SORTN は「上位N件だけを返す」関数です。SORT + ARRAY_CONSTRAIN を1つにまとめたものと考えると分かりやすいです。
=SORTN(A2:C100, 5, 0, 3, FALSE)
「5件、同順位の扱いは0(そのまま)、3列目の降順」という意味です。
同順位の扱いを指定できるのがSORTNの利点です。ただし引数が分かりにくいので、QUERY の limit を使うほうが読みやすい場面が多いです。
エラーの対処
#REF! が出る
結果の展開先にデータが入っています。 SORTは下・右に結果を広げるため、その領域が空いている必要があります。
#VALUE! が出る
並べ替える列の番号が、範囲の列数を超えています。範囲が3列なのに 4 を指定した、というケースです。
空行が下にずらりと並ぶ
範囲を A2:C1000 のように大きく取ると、空行も並べ替えの対象になります。FILTER で空でない行に絞ってください。
=SORT(FILTER(A2:C1000, A2:A1000<>""), 3, FALSE)
数値なのに文字列として並ぶ
10 の次に 100 ではなく 2 が来るなら、数値が文字列になっています。セルが左寄せになっていないか確認してください。
Excelとの違い
Excelにも SORT があります(Microsoft 365 / Excel 2021以降)。書式はほぼ同じですが、昇順/降順の指定方法が異なります。
| Excel | スプレッドシート | |
|---|---|---|
| 昇順 | 1 |
TRUE |
| 降順 | -1 |
FALSE |
| 列の指定 | 第2引数 | 第2引数(同じ) |
Excel 2019以前では使えないので、その場合はメニューの並べ替えか、作業列を使った方法になります。
まとめ
- – 書式は
=SORT(範囲, 列番号, 昇順か) - – 列番号は範囲の中での位置。シートの列番号ではない
- – 元の表を一切変更しないのが最大の利点
- – 複数キーは列と順序のペアを追加していく
- –
SORT(FILTER(...), ...)で条件付きランキングが作れる - – 上位N件なら QUERY の
limitが読みやすい
コメントを残す