Excelでデータを並べ替えるとき、フィルター機能を使っていませんか?
フィルターの並べ替えは元データを直接変更します。
「あっ、元に戻せない」と焦った経験がある方も多いですよね。
SORT関数なら、元データはそのまま残ります。
別のセルに並べ替えた結果だけを表示できますよ。
この記事では、ExcelのSORT関数の使い方を基本から応用まで解説します。
SORTBY関数やFILTER関数との組み合わせパターンも紹介するので、ぜひ参考にしてみてください。
ExcelのSORT関数とは?フィルター機能との違い
SORT関数(読み方:ソート)は、データを並べ替える関数です。
英語の「sort」は「分類する・整理する」という意味があります。
指定した範囲のデータを、別のセルに並べ替えて表示できます。
フィルター機能の並べ替えとSORT関数の決定的な違い
Excelのフィルター機能で並べ替えると、元のデータが直接変更されます。
うっかり保存してしまうと、元の並び順には戻せません。
一方、SORT関数は元データに一切手を加えません。
数式を入力したセルに、並べ替えた結果だけが表示されます。
元の表はそのまま残るので、データが壊れる心配がないんです。
| 比較項目 | フィルター機能 | SORT関数 |
|---|---|---|
| 元データ | 直接変更される | 変更されない |
| 結果の表示先 | 同じ場所 | 別のセル |
| 自動更新 | 手動で再操作が必要 | データ変更時に自動反映 |
| 元に戻す | Ctrl+Z以外では困難 | 数式を消すだけ |
データ入力と並べ替え結果を分けたいなら、SORT関数を使いましょう。
スピル(動的配列)のしくみ
SORT関数は動的配列関数のひとつです。
1つの数式を入力するだけで、結果が複数セルに自動展開されます。
この自動展開の仕組みをスピルと呼びます。
たとえば7行のデータを並べ替えると、結果も7行分表示されます。
数式を入力するのは先頭の1セルだけでOKです。
FILTER関数やUNIQUE関数も同じスピルの仕組みで動きますよ。
SORT関数が使えるExcelのバージョン
SORT関数が使えるのは以下の環境です。
- Microsoft 365(Windows / Mac)
- Excel 2021
- Excel 2024
- Excel for the web
Excel 2019以前では使えません。
お使いのバージョンがわからない場合は、モダンExcel解説で確認してみてください。
SORT関数の書き方(構文と引数)
基本構文
=SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準])
引数の説明
| 引数 | 必須/省略可 | 説明 | 既定値 |
|---|---|---|---|
| 配列 | 必須 | 並べ替えたいセル範囲または配列 | – |
| 並べ替えインデックス | 省略可 | 基準にする列番号(または行番号) | 1 |
| 並べ替え順序 | 省略可 | 1 = 昇順 / -1 = 降順 | 1(昇順) |
| 並べ替え基準 | 省略可 | FALSE = 行方向 / TRUE = 列方向 | FALSE(行方向) |
必須の引数は「配列」だけです。
残りの3つは省略できます。
省略すると「1列目を基準に昇順で行を並べ替え」になります。
まずは =SORT(A2:D8) のように配列だけで試してみてください。
基本の使い方|ExcelでSORT関数を使って並べ替える
ここから実際の数式を見ていきましょう。
以下の売上データ(A1:D8)を使って解説します。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
数値を降順に並べ替える(売上ランキング例)
売上金額が高い順に並べ替えてみます。
売上金額は3列目なので、次のように入力します。
=SORT(A2:D8, 3, -1)
第2引数が 3(3列目=売上金額列)、第3引数が -1(降順)です。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
売上ランキング表が一瞬で完成しますよ。
元データに新しい行を追加すれば、ランキングも自動で更新されます。
日付を昇順に並べ替える
日付が古い順(昇順)に並べ替える場合です。
日付は4列目なので、次のように入力します。
=SORT(A2:D8, 4, 1)
第3引数を 1(昇順)にします。
昇順は既定値なので、=SORT(A2:D8, 4) と省略してもOKです。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
タスク管理やスケジュール表の並べ替えに便利ですよ。
文字列を並べ替える(注意点あり)
担当者名(1列目)で並べ替えてみます。
=SORT(A2:D8, 1, 1)
ただし、ここで注意点があります。
SORT関数は漢字をUnicodeのコードポイント順で並べます。
五十音順にはならないんです。
たとえば「伊藤→佐藤→山本→渡辺→田中→鈴木→高橋」のように、読み仮名とは関係ない順番になります。
日本語の名前を正しく五十音順にする方法は、後半の「日本語ソートの落とし穴」で詳しく解説しますね。
複数列を基準に並べ替えるにはSORTBYを使う
「部署で並べて、同じ部署の中では売上が高い順」のように、複数の基準で並べ替えたい場面は多いですよね。
SORT関数では基準を1つしか指定できません。
こういうときはSORTBY関数の出番です。
SORTBYの構文と引数
=SORTBY(配列, 基準配列1, [順序1], [基準配列2, 順序2], ...)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 配列 | 必須 | 並べ替え対象の範囲 |
| 基準配列1 | 必須 | 並べ替えの基準にする列(1列のみ) |
| 順序1 | 省略可 | 1 = 昇順 / -1 = 降順 |
| 基準配列2, 順序2 | 省略可 | 2番目以降の基準と順序のペア |
SORT関数との大きな違いは、基準を列番号ではなく範囲で直接指定する点です。
基準と順序のペアを追加すれば、複数キーで並べ替えられます。
部署→売上の2キー並べ替え(数式例)
部署を昇順、同じ部署内では売上金額を降順に並べます。
=SORTBY(A2:D8, B2:B8, 1, C2:C8, -1)
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
| 山本 | 経理部 | 290,000 | 2024/4/22 |
| 田中 | 経理部 | 280,000 | 2024/4/18 |
| 渡辺 | 総務部 | 350,000 | 2024/4/15 |
| 鈴木 | 総務部 | 320,000 | 2024/4/12 |
部署ごとにまとまり、各部署内では売上が高い順に並んでいますね。
SORT vs SORTBY:どちらを使うべきか
| 比較項目 | SORT | SORTBY |
|---|---|---|
| 基準の指定方法 | 列番号(数値) | 列範囲(直接指定) |
| 複数基準 | 不可(1つだけ) | 可(ペアで追加) |
| 列の挿入・削除 | 番号がずれる | 範囲参照なので壊れにくい |
| 列方向ソート | TRUE指定で可能 | 不可 |
| 配列外の列を基準に | 不可 | 可能 |
基準が1つだけでシンプルな場合はSORT関数が手軽です。
複数基準で並べ替えるなら、SORTBY関数を使ってください。
列の挿入・削除が多い表では、SORTBY関数のほうが安全ですよ。
FILTER関数と組み合わせる|抽出+並べ替えを一発で
SORT関数はFILTER関数と組み合わせると、さらに便利になります。
「条件で絞り込んで、並べ替える」を1つの数式で実現できます。
基本パターン:SORT(FILTER(…))
営業部のデータだけを売上が高い順に表示してみます。
=SORT(FILTER(A2:D8, B2:B8="営業部"), 3, -1)
FILTER関数で営業部だけを抽出し、SORT関数で売上金額の降順に並べます。
結果は以下のとおりです。
| 担当者 | 部署 | 売上金額 | 日付 |
|---|---|---|---|
| 高橋 | 営業部 | 550,000 | 2024/4/3 |
| 佐藤 | 営業部 | 480,000 | 2024/4/5 |
| 伊藤 | 営業部 | 410,000 | 2024/4/8 |
抽出条件を変えれば、部署別ランキングもかんたんに作れますよ。
UNIQUE+SORTで重複なしリストをソート
UNIQUE関数と組み合わせると、重複なしのリストを並べ替えられます。
=SORT(UNIQUE(B2:B8))
部署列の重複を除いた一意のリストが、昇順で表示されます。
ドロップダウンリストの選択肢を作るときに便利なパターンです。
実務で使えるSORT応用パターン
VSTACK+SORTで複数シートを統合して並べ替え
月ごとにシートが分かれているデータを1つにまとめたいケースです。
VSTACK関数でデータを縦に結合してから並べ替えます。
=SORT(VSTACK(Sheet1!A2:D8, Sheet2!A2:D8), 3, -1)
VSTACK関数が2つのシートのデータを縦に連結します。
その結果をSORT関数が売上金額の降順に並べ替えます。
複数シートのデータを手動でコピペする必要がなくなりますよ。
IF関数でデータなし時のエラー回避
SORT関数に空の範囲を渡すとエラーになります。
データがないケースに備えて、IF関数で分岐しましょう。
=IF(COUNTA(A2:A8)=0, "データなし", SORT(A2:D8, 3, -1))
A列にデータが1件もなければ「データなし」を表示します。
データがあればSORT関数で並べ替えた結果を返します。
IFERROR関数でエラー値をキャッチする方法もあります。
ただし、原因が明確なときはIF関数で事前チェックするほうがわかりやすいですよ。
日本語ソートの落とし穴|順番がおかしいときの原因と対処
SORT関数で日本語の名前を並べ替えたとき、「五十音順になっていない」と感じたことはありませんか?
これはSORT関数の仕様による問題です。
SORT関数はふりがなを無視する
Excelのフィルター機能は、セルに保存されているふりがな情報を使って並べ替えます。
IMEで入力したときの読み仮名が記録されているので、五十音順になるんです。
一方、SORT関数はふりがな情報を無視します。
漢字をUnicodeのコードポイント順で比較します。
そのため、読み方とは関係ない並び順になります。
さらに、CSVから取り込んだデータにはふりがな情報がありません。
コピペしたデータも同様です。
フィルター機能でも正しく並べ替えられないケースがあります。
SORTBY+PHONETIC関数で五十音順に並べ替える
PHONETIC関数を使えば、ふりがな情報を取り出せます。
SORTBY関数と組み合わせて五十音順に並べ替えましょう。
=SORTBY(A2:D8, PHONETIC(A2:A8), 1)
PHONETIC関数が担当者名のふりがなを取得します。
SORTBY関数がそのふりがなを基準に昇順で並べ替えます。
ふりがな情報がないセル(CSV取り込みなど)には、手動で設定が必要です。
対象セルを選択して Shift + Alt + ↑ を押すと、ふりがなの編集モードに入れますよ。
よくあるエラーと対処法
SORT関数で困ったときは、以下の表を確認してみてください。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #SPILL! エラー | スピル先のセルが空でない | 展開先のセルを空にする。結合セルも解除する |
| #NAME? エラー | 関数が使えないバージョン | Microsoft 365またはExcel 2021以降にアップデートする |
| #VALUE! エラー | 引数に不正な値 | 並べ替えインデックスが列数を超えていないか確認する |
| 並び順がおかしい | 数値が文字列として格納されている | VALUE関数で数値に変換してから並べ替える |
| 日本語が五十音順にならない | ふりがな情報の不在 | SORTBY+PHONETIC関数を使う(上記参照) |
| スピル結果が更新されない | 手動計算モードになっている | Ctrl + Shift + F9 で再計算する |
#SPILL! エラーはスピル関数で最も多いエラーです。数式の展開先にデータや結合セルがあると発生します。展開先を十分に空けておきましょう。
まとめ
この記事では、ExcelのSORT関数の使い方を解説しました。
ポイントをおさらいしておきましょう。
- SORT関数は、元データを変更せずに別セルに並べ替え結果を表示する関数
- 必須の引数は「配列」だけ。省略すると1列目・昇順で並べ替え
- 第3引数を
-1にすると降順になる - 複数基準で並べ替えるならSORTBY関数を使う
- FILTER関数と組み合わせると抽出+並べ替えが一発
- VSTACK関数で複数シートの統合+並べ替えも可能
- 日本語の五十音順にはPHONETIC関数との組み合わせが必要
- Microsoft 365 / Excel 2021以降で利用可能
SORT関数を覚えると、手動で並べ替える手間がなくなります。
まずは売上ランキングのような身近な場面で試してみてください。
慣れたらFILTER関数やUNIQUE関数との組み合わせにも挑戦してみてくださいね。
