🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのSORT関数 — 元データを触らずに並べ替える(SORT と SORTBY の違い)

|

ExcelのSORT関数 — 元データを触らずに並べ替える(SORT と SORTBY の違い)

要点 — リボンの「並べ替え」ボタンは実際の行を並べ替えます。SORT 関数は、 元が変わるたびに並べ替え直すコピーを返します。構文は =SORT(配列, [並べ替えインデックス], [順序], [列で並べ替え])。誰もが引っかかる ルール:並べ替えインデックスは列番号であって列の文字ではない—— SORT(data, 2, -1) は2列目で降順、範囲外は #VALUE!出力に含まれないキーで 並べ替えたいときは、インデックスに無理に押し込まず SORTBY を使う。 Excel 365 / 2021 以降。

=SORT(Sales)                       ' 1列目の昇順で並んだコピー
=SORT(Sales, 2, -1)                ' 2列目で降順
=SORTBY(Names, Scores, -1)         ' 表示しないスコア列で名前を並べ替え

並べ替えといえば、範囲を選んで「並べ替え」をクリックし、行の順序を恒久的に書き換える こと——一度なら良くても、データが増え続けるとつらい作業でした。SORT 関数はそれを ひっくり返します。元を一切いじらず、決して古びない「並んだビュー」を返します。

この記事でわかること

  • SORT は「生きたコピー」、リボンのボタンは「一度きりの書き換え」
  • 並べ替えインデックスのルール:列番号であること、#VALUE! の意味
  • 複数列を一度に並べ替える
  • SORT ではなく SORTBY が正解になるとき
  • ダッシュボードやドロップダウン向けの生きた =SORT(UNIQUE(FILTER(...))) パターン

考え方の軸:書き換えではなく「並んだコピー」

リボンの「並べ替え」は破壊的で手作業です。選んだ行を物理的に並べ替え、記憶を 持たない——明日1行足せば、また並べ替えです。SORT 関数は順序付きの鏡です。元を 読み、自分のスピル範囲に並んだコピーを返し、元が変わった瞬間に並べ直します。元データは 入力順のまま——その順序自体に意味がある(入力順、ID列)ときや、元が追記し続ける テーブルのときに効いてきます。

' 元 A2:C100 は入力どおりのまま。これは別の場所に並んだビューをスピル:
=SORT(A2:C100, 3, -1)        ' 3列目で降順(高い順)

誰もが引っかかるルール:並べ替えインデックスは「番号」

並べ替えインデックスは「どの列で並べるか」を指定し、それは配列内の位置番号 (1始まり)であって、ワークシートの列文字ではありません。配列が A2:C100 なら、 1 が A 列、2 が B、3 が C。配列に無い列を指定すると #VALUE!

=SORT(A2:C100, 2)        ' 配列の2列目(B)で昇順
=SORT(A2:C100, 4)        ' -> #VALUE!  配列は3列しかない

順序は昇順が 1(既定)、降順が -1 で、"asc"/"desc" という文字ではありません。 この2点を押さえれば SORT のエラーの9割は消えます。第4引数 列で並べ替え は、行を 上下にではなく列を左右に並べ替えに切り替えます——使う場面はまれです。

複数列を一度に並べ替える

実務の並べ替えはたいてい複数キー——まず地域、地域内では金額。インデックスも順序も 波カッコの配列で渡します。

' 1列目を昇順、同点内では3列目を降順:
=SORT(Sales, {1, 3}, {1, -1})

2つの {...} は位置どうしで対応します。1列目に順序1(昇順)、3列目に順序−1(降順)。 主キーと副キーを1つの式に——リボンのダイアログだとドロップダウンを3つたどる作業です。

SORTBY が正解になるとき

どちらを使うかを決める違いがこれです。SORT は、返す配列の中にある列でしか 並べ替えできません。SORTBY表示するもの並べ替えの基準を切り離します—— だから、見せたくないスコア列で名前一覧を並べ替えられます。

' SORT ではきれいにできない——並べ替えキー(Scores)が出力(Names)に無い:
=SORTBY(Names, Scores, -1)               ' 名前をスコア順に、スコアは隠す

' 2つの外部キーで並べ替え:
=SORTBY(Names, Region, 1, Hire_Date, 1)  ' 地域、次に入社日

判断:並べ替えキーがすでに返している列なら、インデックス付きの SORT が最も簡単。 出力に無いもの——あるいは SORTBY(data, LEFT(Code, 2)) のような式——で並べたく なった瞬間、SORT の列インデックスと格闘するのはやめて SORTBY に切り替えます。 外部キーを SORT に押し込もうとするのが、「SORT では無理」と思い込む最大の原因で、 実は最初から SORTBY の出番だったのです。

生きたパターン:UNIQUE と FILTER を SORT で包む

SORT は、現代 Excel で最も役立つ式の一番外側の層です。 UNIQUEFILTER と組めば、1つの式が、きれいで・並んでいて・自動メンテされる一覧を作ります。

=SORT(UNIQUE(FILTER(Customer, Region = "West")))

FILTER が選び、UNIQUE が重複を除き、SORT が並べる——売上が入った瞬間に全部 やり直します。動的ドロップダウン(# でスピルを入力規則に指定)や、自動で保たれる ダッシュボード一覧の定番ソースです。手作業の並べ替えも更新もマクロも不要。

ExcelMaster の使いどころ

並べ替えの依頼の多くは、要するに「これをランキング表示して、ずっと保って」です—— 残高順の上位顧客、古い順の未対応チケット、リーダーボード。ExcelMaster は、正しい 数値インデックスと順序を使った SORT、あるいはキーが出力の外にあるときの SORTBY を 日本語の指示から書き、指定したタブに生きたビューを置きます。ランキングを説明すれば、 インデックスや -1、複数キーの波カッコを正しく組んでくれます。

よくある質問

SORT 関数と「並べ替え」ボタンの違いは?

SORT 関数は並んだコピーを新しい範囲に返し、元が変わると自動で並べ直し、元データは そのまま。リボンの「並べ替え」は選んだ行の順序を恒久的に書き換え、データ変更のたびに やり直しが必要です。

SORT 関数で複数列を並べ替えるには?

インデックスと順序を波カッコの配列で渡します:=SORT(data, {1, 2}, {1, -1}) は 1列目を昇順、同点内では2列目を降順。

SORT と SORTBY の違いは?

SORT は配列を自身の列(番号指定)で並べ替えます。SORTBY は1つ以上の別の配列や 式で並べ替えるので、表示結果に含まれないキーで並べられます。

SORT が #VALUE! を返すのはなぜ?

たいていは 並べ替えインデックスが配列に無い列を指しているからです——列文字ではなく、 配列内の1始まりの位置です。渡した列数の範囲内かを確認してください。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-16。

関連ガイド: ExcelのFILTER関数 · ExcelのUNIQUE関数 · ExcelのXLOOKUP