配列・抽出
SORT関数の使い方・読み方
読み方:SORT は「ソート」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
SORTは、範囲を並べ替えた結果を返す関数です。
このページの中身(25項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
SORT(範囲, 並べ替える列, 昇順, 並べ替える列2, 昇順2)
https://support.google.com/docs/answer/3093150 - Microsoft サポート:SORT 関数(2021 以降で使えます)
https://support.microsoft.com/ja-jp/excel/functions/sort-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
メニューの「並べ替え」と違い、元の表には一切手を触れません。 別の場所に並べ替えた結果を表示するので、元データの順番が保たれます。
複数人で使うファイルでは、これが決定的な利点になります。誰かが並べ替えたせいで元の順番が失われる、という事故が起きません。

書式
=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以前では使えないので、その場合はメニューの並べ替えか、作業列を使った方法になります。
並べ替えを数式で行う意味
並べ替えは、通常は機能として実行するものです。範囲を選んで、基準の列を指定して、昇順か降順を選ぶ。この操作は誰でも知っています。
しかし、この方法には限界があります。元データが更新されるたびに、並べ替えをやり直す必要があります。作業を忘れれば、古い順序のまま人に見せることになります。また、元データそのものを並べ替えてしまうため、入力順が失われます。
並べ替えの関数を使うと、元データは触らずに、並べ替えた結果を別の場所に表示できます。元データが更新されれば結果も自動的に並び替わります。入力順は保たれたまま、見せる順序だけを変えられます。
この違いは、レポートを作る場面で効いてきます。売上の多い順に並べた一覧を用意しておけば、データを追加するだけで最新のランキングになります。毎月同じ操作を繰り返す必要がありません。
複数の基準で並べる
並べ替えの基準は一つとは限りません。分類ごとにまとめたうえで、その中を金額順にしたい、という要求はよくあります。
この場合、基準の列と順序を複数指定します。最初に指定した基準が優先され、それが同じ場合に次の基準が使われます。指定の順番が結果を決めるので、何を最優先にするかを先に決めてください。
よくある誤りが、基準の指定と順序の指定がずれることです。基準の列と昇順降順の指定はペアで並べるので、片方だけ足すと対応が崩れます。基準を追加するときは、必ず順序の指定も一緒に足してください。
もうひとつ、基準に使う列は、対象範囲の中での位置で指定します。シートの列番号ではありません。範囲がC列から始まっていれば、C列が一番目です。ここを取り違えると、想定と違う列で並びます。
抽出や重複除去と組み合わせる
並べ替えの関数は、他の関数の結果に対しても使えます。この組み合わせが実務では効いてきます。
条件に合う行だけを抽出してから並べ替えれば、絞り込みと並べ替えを一本の数式で書けます。特定の期間の取引を金額順に並べる、といった処理です。
重複を除いてから並べ替えれば、選択肢の一覧が整った形で得られます。プルダウンの参照先として使うと便利です。
さらに、並べ替えた結果の先頭数行だけを切り出せば、上位のランキングになります。切り出しの関数と組み合わせる形です。
このように、抽出、重複除去、並べ替え、切り出しという処理を関数で表現できると、作業列やコピー貼り付けを挟まずに済みます。元データが更新されれば、すべてが自動で追従します。
ただし、組み合わせが深くなるほど数式は読みにくくなります。他人が触るファイルでは、途中の結果を別の場所に出しておくほうが親切な場合もあります。
並べ替えで気をつけること
数値と文字列が混ざった列を基準にすると、意図しない順序になります。文字列として入っている数字は、数値とは別に扱われます。並べ替える前に、列の型を揃えてください。
日付も同様です。日付として入力されていれば正しく並びますが、文字列として入っていると文字の順序で並びます。年月日の順で書かれた文字列なら偶然正しく並びますが、他の形式では崩れます。
空白セルの扱いにも注意が必要です。昇順では先頭か末尾のどちらかにまとまります。空白を除きたい場合は、抽出の関数で先に除いてください。
結合されたセルがある範囲は、正しく扱えません。並べ替えの対象にする範囲では、セルの結合を避けてください。
そして、あふれる先に何かがあるとエラーになります。結果が展開される範囲を空けておいてください。
五十音順に並べたいとき
日本語のデータを並べ替えると、期待した順序にならないことがあります。原因は、文字コードの順序で並ぶためです。
漢字は読み方ではなく文字コードで並びます。「青木」と「石井」を比べたとき、読みでは青木が先ですが、文字コードでは違う順序になることがあります。
確実に五十音順にしたいなら、読み仮名の列を用意してください。その列を並べ替えの基準にすれば、意図どおりに並びます。
読み仮名を後から作るのは手間ですが、入力の時点で取得できる場合があります。入力の変換履歴から読みを取り出す関数を持つ環境もあります。ただし、変換の仕方によっては正しい読みにならないため、確認が必要です。
名簿のように五十音順が必須の表では、最初から読み仮名の列を設けてください。後から追加するより、はるかに楽です。
カタカナとひらがなが混在している場合も順序が乱れます。読み仮名の列は、どちらかに統一してください。
並べ替えを固定するか動的にするか
並べ替えた結果を、そのまま使い続けるか、常に最新にするかで方法が変わります。
固定したい場合は、値として貼り付けます。以降は元データが変わっても動きません。ある時点の順位を記録として残す用途に適しています。
動的にしたい場合は、関数のままにします。元データが更新されれば、順序も自動で変わります。常に最新のランキングを表示する用途に適しています。
判断の基準は、その表を何のために使うかです。報告書として提出するなら固定、日常的に確認するなら動的、と考えてください。
動的にする場合、順位が入れ替わることに注意が必要です。他のセルから「三行目の値」として参照していると、参照先の意味が変わります。順位ではなく項目名で参照するようにしてください。
もうひとつ、動的な表は編集できません。個別のセルを直したい場合は、値として貼り付けてから作業する必要があります。
両方が必要なら、動的な表と固定した表を別々に持つ構成にしてください。元データは一つで、用途に応じた表を複数作る。この考え方が、表計算の設計では基本になります。
「配列・抽出」の関数を全体から見る
配列・抽出は複数の値をまとめて返す関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに9本あります。
このカテゴリで共通するつまずき
展開先が空いていないと #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が読みやすい
関連する関数
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 を使うと、 誰が触っても元データが崩れない形になります。