要点 — リボンの「並べ替え」ボタンは実際の行を並べ替えます。
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 で最も役立つ式の一番外側の層です。
UNIQUE と FILTER
と組めば、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
