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

執筆者:

カテゴリ:

SORT関数の使い方・読み方のイメージ

配列・抽出

SORT関数の使い方・読み方

Excel関数辞典

読み方:SORT は「ソート」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

SORTは、範囲を並べ替えた結果を返す関数です。

使える環境Excel○Googleスプレッドシート○
このページの中身(25項目)
  1. 書式
  2. 基本の使い方
  3. 複数のキーで並べ替える
  4. FILTERと組み合わせる
  5. 上位N件だけ出す
  6. 並べ替えの基準を別列で作る
  7. SORTNとの違い
  8. エラーの対処
  9. Excelとの違い
  10. 並べ替えを数式で行う意味
  11. 複数の基準で並べる
  12. 抽出や重複除去と組み合わせる
  13. 並べ替えで気をつけること
  14. 五十音順に並べたいとき
  15. 並べ替えを固定するか動的にするか
  16. 「配列・抽出」の関数を全体から見る
  17. 数式を書く前の手順
  18. どの関数でも共通する確認
  19. 引き継ぐときに残すこと
  20. このサイトの収録状況
  21. よくある質問
  22. まとめ
  23. 関連する関数
  24. SORT でつまずきやすいところ
  25. 元の表を触らずに並べ替える意味

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

メニューの「並べ替え」と違い、元の表には一切手を触れません。 別の場所に並べ替えた結果を表示するので、元データの順番が保たれます。

複数人で使うファイルでは、これが決定的な利点になります。誰かが並べ替えたせいで元の順番が失われる、という事故が起きません。

SORT関数の使い方の記事構成図
SORT関数の使い方:この記事で扱う内容

書式

=SORT(範囲, 並べ替える列1, 昇順か1, [列2, 昇順か2], ...)
引数内容
範囲並べ替える表
並べ替える列範囲の左から何番目か(数字)
昇順かTRUE=昇順 / FALSE=降順

列は範囲の中での番号です。シートの列番号ではありません。範囲が C2:E10 なら、C列が1、D列が2になります。

基本の使い方

ABC
1支店商品売上
2東京A1200
3大阪A800
4東京B1500

売上(3列目)の降順で並べます。

=SORT(A2:C4, 3, FALSE)

結果: 東京/B/1500 → 東京/A/1200 → 大阪/A/800

見出しを一緒に出すなら {} で結合します。

=SORT({A2:C100}, 3, FALSE)

または見出し行だけ別に書いて、その下にSORTを置きます。

SORT関数の使い方の要点図
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スプレッドシート
昇順1TRUE
降順-1FALSE
列の指定第2引数第2引数(同じ)

Excel 2019以前では使えないので、その場合はメニューの並べ替えか、作業列を使った方法になります。


並べ替えを数式で行う意味

並べ替えは、通常は機能として実行するものです。範囲を選んで、基準の列を指定して、昇順か降順を選ぶ。この操作は誰でも知っています。

しかし、この方法には限界があります。元データが更新されるたびに、並べ替えをやり直す必要があります。作業を忘れれば、古い順序のまま人に見せることになります。また、元データそのものを並べ替えてしまうため、入力順が失われます。

並べ替えの関数を使うと、元データは触らずに、並べ替えた結果を別の場所に表示できます。元データが更新されれば結果も自動的に並び替わります。入力順は保たれたまま、見せる順序だけを変えられます。

この違いは、レポートを作る場面で効いてきます。売上の多い順に並べた一覧を用意しておけば、データを追加するだけで最新のランキングになります。毎月同じ操作を繰り返す必要がありません。


複数の基準で並べる

並べ替えの基準は一つとは限りません。分類ごとにまとめたうえで、その中を金額順にしたい、という要求はよくあります。

この場合、基準の列と順序を複数指定します。最初に指定した基準が優先され、それが同じ場合に次の基準が使われます。指定の順番が結果を決めるので、何を最優先にするかを先に決めてください。

よくある誤りが、基準の指定と順序の指定がずれることです。基準の列と昇順降順の指定はペアで並べるので、片方だけ足すと対応が崩れます。基準を追加するときは、必ず順序の指定も一緒に足してください。

もうひとつ、基準に使う列は、対象範囲の中での位置で指定します。シートの列番号ではありません。範囲がC列から始まっていれば、C列が一番目です。ここを取り違えると、想定と違う列で並びます。


抽出や重複除去と組み合わせる

並べ替えの関数は、他の関数の結果に対しても使えます。この組み合わせが実務では効いてきます。

条件に合う行だけを抽出してから並べ替えれば、絞り込みと並べ替えを一本の数式で書けます。特定の期間の取引を金額順に並べる、といった処理です。

重複を除いてから並べ替えれば、選択肢の一覧が整った形で得られます。プルダウンの参照先として使うと便利です。

さらに、並べ替えた結果の先頭数行だけを切り出せば、上位のランキングになります。切り出しの関数と組み合わせる形です。

このように、抽出、重複除去、並べ替え、切り出しという処理を関数で表現できると、作業列やコピー貼り付けを挟まずに済みます。元データが更新されれば、すべてが自動で追従します。

ただし、組み合わせが深くなるほど数式は読みにくくなります。他人が触るファイルでは、途中の結果を別の場所に出しておくほうが親切な場合もあります。


並べ替えで気をつけること

数値と文字列が混ざった列を基準にすると、意図しない順序になります。文字列として入っている数字は、数値とは別に扱われます。並べ替える前に、列の型を揃えてください。

日付も同様です。日付として入力されていれば正しく並びますが、文字列として入っていると文字の順序で並びます。年月日の順で書かれた文字列なら偶然正しく並びますが、他の形式では崩れます。

空白セルの扱いにも注意が必要です。昇順では先頭か末尾のどちらかにまとまります。空白を除きたい場合は、抽出の関数で先に除いてください。

結合されたセルがある範囲は、正しく扱えません。並べ替えの対象にする範囲では、セルの結合を避けてください。

そして、あふれる先に何かがあるとエラーになります。結果が展開される範囲を空けておいてください。


五十音順に並べたいとき

日本語のデータを並べ替えると、期待した順序にならないことがあります。原因は、文字コードの順序で並ぶためです。

漢字は読み方ではなく文字コードで並びます。「青木」と「石井」を比べたとき、読みでは青木が先ですが、文字コードでは違う順序になることがあります。

確実に五十音順にしたいなら、読み仮名の列を用意してください。その列を並べ替えの基準にすれば、意図どおりに並びます。

読み仮名を後から作るのは手間ですが、入力の時点で取得できる場合があります。入力の変換履歴から読みを取り出す関数を持つ環境もあります。ただし、変換の仕方によっては正しい読みにならないため、確認が必要です。

名簿のように五十音順が必須の表では、最初から読み仮名の列を設けてください。後から追加するより、はるかに楽です。

カタカナとひらがなが混在している場合も順序が乱れます。読み仮名の列は、どちらかに統一してください。


並べ替えを固定するか動的にするか

並べ替えた結果を、そのまま使い続けるか、常に最新にするかで方法が変わります。

固定したい場合は、値として貼り付けます。以降は元データが変わっても動きません。ある時点の順位を記録として残す用途に適しています。

動的にしたい場合は、関数のままにします。元データが更新されれば、順序も自動で変わります。常に最新のランキングを表示する用途に適しています。

判断の基準は、その表を何のために使うかです。報告書として提出するなら固定、日常的に確認するなら動的、と考えてください。

動的にする場合、順位が入れ替わることに注意が必要です。他のセルから「三行目の値」として参照していると、参照先の意味が変わります。順位ではなく項目名で参照するようにしてください。

もうひとつ、動的な表は編集できません。個別のセルを直したい場合は、値として貼り付けてから作業する必要があります。

両方が必要なら、動的な表と固定した表を別々に持つ構成にしてください。元データは一つで、用途に応じた表を複数作る。この考え方が、表計算の設計では基本になります。

「配列・抽出」の関数を全体から見る

配列・抽出は複数の値をまとめて返す関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに9本あります。

記事
ARRAYFORMULA
ARRAY_CONSTRAIN
FILTER
FLATTEN
QUERY
SEQUENCE
SORTN
TRANSPOSE
UNIQUE

このカテゴリで共通するつまずき

展開先が空いていないと #REF! で止まります。専用のシートに分けてください。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

元の表を変えずに別の見え方を作れるのが利点です。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

書き始める前に決めておくことがあります。ここが曖昧なまま書くと、途中で行き詰まります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

展開先が空いていないと #REF! で止まります。専用のシートに分けてください。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

元の表を変えずに別の見え方を作れるのが利点です。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

関数を問わず、結果がずれる原因は限られています。この5つを確認すれば、大半が解決します。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

現在、201本の記事をカテゴリ別に整理しています。関数名が分からない場合は、カテゴリから探してください。

カテゴリ記事数
目的別51本
集計47本
文字列31本
日付19本
検索・参照15本
条件15本
機能12本
配列・抽出10本 ←この記事
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. 結果が展開されずエラーになります

あふれる先に何か入っています。下方向と右方向を空にしてください。

Q. 基準の列がずれます

対象範囲の中での位置で指定します。シートの列番号ではありません。

Q. 昇順と降順の指定はどう書きますか

数値で指定します。昇順が一、降順が負の一です。省略すると昇順になります。

Q. 横方向に並べ替えられますか

方向を指定する引数があります。横並びのデータにも対応できます。

Q. 五十音順に並びますか

文字コードの順序で並ぶため、読み仮名どおりにはなりません。正確に五十音順にしたい場合は、読み仮名の列を用意してそれを基準にしてください。

Q. 元データを消したら結果も消えました

結果は元データと連動しています。固定したい場合は値として貼り付けてください。

Q. 上位十件だけ表示したいのですが

切り出しの関数と組み合わせてください。並べ替えた結果の先頭部分を取り出せます。

Q. 古い環境でも使えますか

比較的新しい関数のため、古い環境では使えません。使えない場合は、機能としての並べ替えを使うか、順位を求める関数と検索関数の組み合わせで代替します。



まとめ

  • 書式は =SORT(範囲, 列番号, 昇順か)
  • 列番号は範囲の中での位置。シートの列番号ではない
  • 元の表を一切変更しないのが最大の利点
  • 複数キーは列と順序のペアを追加していく
  • SORT(FILTER(...), ...) で条件付きランキングが作れる
  • 上位N件なら QUERY の limit が読みやすい

関連する関数

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

SORT でつまずきやすいところ

Excelで #SPILL! が出る

SORT の結果は元の表と同じ行数に広がります。 広がる先に1つでも値が入っていると #SPILL! で止まります。 書き出す範囲を空けてください。見えない空白でも止まります。

並べ替えの基準がずれる

2つ目の引数は「範囲の何列目か」です。シートの列番号ではありません。 範囲が C2:F100 なら、C列が1、D列が2です。 シートの感覚で3と書くとE列で並びます。

空欄が先頭に来る・最後に来る

空欄は数値より小さいものとして扱われ、昇順では先に来ます。 除きたいなら FILTER で先に落とします。

=SORT(FILTER(A2:C100,A2:A100<>""),1,TRUE)

日付が正しく並ばない

日付が文字列だと、辞書順で並びます。 2026/1/5 より 2026/12/1 のほうが先に来る、といった形です。 =ISNUMBER(A2) で確かめ、FALSE なら #VALUE!エラーの直し方 の日付の項を見てください。

元の表を触らずに並べ替える意味

シートの並べ替え機能は、元のデータそのものを動かします。 一度並べ替えると、元の順番には戻せません(取り消しを閉じた後は特に)。

SORT は別の場所に並べ替えた結果を出すだけなので、元は無傷です。 入力用のシートと表示用のシートを分け、表示側で SORT を使うと、 誰が触っても元データが崩れない形になります。