タグ: SORT

  • SORT関数の使い方|元の表を触らずに並べ替える

    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の利点です。ただし引数が分かりにくいので、QUERYlimit を使うほうが読みやすい場面が多いです。

    エラーの対処

    #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件なら QUERYlimit が読みやすい

    関連する関数

    • FILTER — 条件で絞ってから並べ替える
    • QUERY — 絞り込み・並べ替え・件数制限を1つで
    • UNIQUE — 重複を除いてから並べ替える
    • MATCH — 任意の並び順を作る
    • 関数一覧に戻る