ExcelのSORT関数の使い方|複数条件・FILTER組み合わせも解説

スポンサーリンク

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,0002024/4/5
鈴木総務部320,0002024/4/12
高橋営業部550,0002024/4/3
田中経理部280,0002024/4/18
伊藤営業部410,0002024/4/8
渡辺総務部350,0002024/4/15
山本経理部290,0002024/4/22

数値を降順に並べ替える(売上ランキング例)

売上金額が高い順に並べ替えてみます。
売上金額は3列目なので、次のように入力します。

=SORT(A2:D8, 3, -1)

第2引数が 3(3列目=売上金額列)、第3引数が -1(降順)です。
結果は以下のとおりです。

担当者部署売上金額日付
高橋営業部550,0002024/4/3
佐藤営業部480,0002024/4/5
伊藤営業部410,0002024/4/8
渡辺総務部350,0002024/4/15
鈴木総務部320,0002024/4/12
山本経理部290,0002024/4/22
田中経理部280,0002024/4/18

売上ランキング表が一瞬で完成しますよ。
元データに新しい行を追加すれば、ランキングも自動で更新されます。

日付を昇順に並べ替える

日付が古い順(昇順)に並べ替える場合です。
日付は4列目なので、次のように入力します。

=SORT(A2:D8, 4, 1)

第3引数を 1(昇順)にします。
昇順は既定値なので、=SORT(A2:D8, 4) と省略してもOKです。

結果は以下のとおりです。

担当者部署売上金額日付
高橋営業部550,0002024/4/3
佐藤営業部480,0002024/4/5
伊藤営業部410,0002024/4/8
鈴木総務部320,0002024/4/12
渡辺総務部350,0002024/4/15
田中経理部280,0002024/4/18
山本経理部290,0002024/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,0002024/4/3
佐藤営業部480,0002024/4/5
伊藤営業部410,0002024/4/8
山本経理部290,0002024/4/22
田中経理部280,0002024/4/18
渡辺総務部350,0002024/4/15
鈴木総務部320,0002024/4/12

部署ごとにまとまり、各部署内では売上が高い順に並んでいますね。

SORT vs SORTBY:どちらを使うべきか

比較項目SORTSORTBY
基準の指定方法列番号(数値)列範囲(直接指定)
複数基準不可(1つだけ)可(ペアで追加)
列の挿入・削除番号がずれる範囲参照なので壊れにくい
列方向ソートTRUE指定で可能不可
配列外の列を基準に不可可能

基準が1つだけでシンプルな場合はSORT関数が手軽です。
複数基準で並べ替えるなら、SORTBY関数を使ってください。
列の挿入・削除が多い表では、SORTBY関数のほうが安全ですよ。

FILTER関数と組み合わせる|抽出+並べ替えを一発で

SORT関数はFILTER関数と組み合わせると、さらに便利になります。
「条件で絞り込んで、並べ替える」を1つの数式で実現できます。

基本パターン:SORT(FILTER(…))

営業部のデータだけを売上が高い順に表示してみます。

=SORT(FILTER(A2:D8, B2:B8="営業部"), 3, -1)

FILTER関数で営業部だけを抽出し、SORT関数で売上金額の降順に並べます。
結果は以下のとおりです。

担当者部署売上金額日付
高橋営業部550,0002024/4/3
佐藤営業部480,0002024/4/5
伊藤営業部410,0002024/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関数との組み合わせにも挑戦してみてくださいね。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました