ExcelのSORTBY関数の使い方|別列基準で並び替え

スポンサーリンク

Excelでデータを並べ替えるとき、「この列の値を基準にして並べ替えたいけど、表示するのは別の列も含めた全体」と思ったことはありませんか?

SORT関数でも並べ替えはできます。でも基準を列番号で指定するので、列を挿入・削除すると番号がずれてしまうんですよね。

SORTBY関数なら、基準にしたい列を範囲で直接指定できます。列の構成が変わっても数式が壊れにくく、複数キーでの並べ替えもかんたんです。この記事では、SORTBY関数の使い方を基本から応用まで解説します。

SORTBY関数とは?別列基準で並べ替える関数

SORTBY関数(読み方:ソートバイ)は、指定した基準列の値をもとにデータを並べ替える関数です。
英語の「sort by」は「〜を基準に並べ替える」という意味があります。

SORT関数との最大の違いは、基準を「列番号」ではなく「列の範囲」で指定する点です。
さらに、基準と順序のペアを追加すれば、複数キーでの並べ替えもできます。

たとえば「部署で並べて、同じ部署内では売上が高い順」のような複数条件の並べ替えが、1つの数式で完結しますよ。

SORTBY関数が使えるExcelのバージョン

SORTBY関数が使えるのは以下の環境です。

  • Microsoft 365(Windows / Mac)
  • Excel 2021
  • Excel 2024
  • Excel for the web

Excel 2019以前では使えません。
お使いのバージョンがわからない場合は、モダンExcel解説で確認してみてください。

SORTBY関数の書き方(構文と引数)

基本構文

=SORTBY(配列, 基準配列1, [並べ替え順序1], [基準配列2, 並べ替え順序2], ...)

引数の説明

引数必須/省略可説明既定値
配列必須並べ替え対象のセル範囲または配列
基準配列1必須並べ替えの基準にする列(1列または1行のみ)
並べ替え順序1省略可1 = 昇順 / -1 = 降順1(昇順)
基準配列2以降省略可2番目以降の基準と順序のペア(最大126組)

必須の引数は「配列」と「基準配列1」の2つです。
並べ替え順序を省略すると昇順(1)になります。

ポイントは、基準配列に1列(または1行)のみを指定することです。
複数列を基準配列に指定するとエラーになるので注意してください。

基本の使い方|SORTBY関数で別の列を基準に並べ替える

ここから実際の数式を見ていきましょう。
以下の売上データ(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

売上金額の降順で並べ替える

売上金額が高い順に並べ替えてみます。
基準にしたいC列の範囲を直接指定します。

=SORTBY(A2:D8, C2:C8, -1)

第1引数がデータ全体(A2:D8)、第2引数が基準列(C2:C8)、第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

SORT関数なら =SORT(A2:D8, 3, -1) と列番号で指定しますが、SORTBY関数は C2:C8 と範囲で指定します。
列を挿入・削除しても範囲参照が自動調整されるので、数式が壊れにくいのがメリットです。

日付の昇順で並べ替える

日付が古い順に並べ替える場合です。

=SORTBY(A2:D8, D2:D8, 1)

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

配列外の列を基準に並べ替える

SORTBY関数の大きな特長は、表示するデータの範囲外にある列でも基準に使えることです。
たとえば、E列に「優先度」が入っている場合、A:D列のデータをE列基準で並べ替えられます。

=SORTBY(A2:D8, E2:E8, 1)

SORT関数ではこれができません。基準列が配列の中に含まれている必要があります。
表に表示したくない基準で並べ替えたいときは、SORTBY関数が便利ですよ。

複数キーで並べ替える|基準と順序をペアで追加

SORTBY関数の真骨頂は、複数の基準で並べ替えられることです。
基準配列と並べ替え順序のペアを追加するだけで、2段階・3段階の並べ替えが実現します。

部署→売上の2キー並べ替え

部署を昇順で並べて、同じ部署内では売上金額を降順にします。

=SORTBY(A2:D8, B2:B8, 1, C2:C8, -1)

第2・3引数が1つ目の基準(部署昇順)、第4・5引数が2つ目の基準(売上降順)です。
結果は以下のとおりです。

担当者部署売上金額日付
高橋営業部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

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

3キー以上の並べ替え

基準と順序のペアは最大126組まで追加できます。
たとえば「部署→日付→売上」の3段階で並べ替えるなら、以下のように書きます。

=SORTBY(A2:D8, B2:B8, 1, D2:D8, 1, C2:C8, -1)

ペアが増えるほど数式は長くなりますが、やっていることはシンプルです。
「基準列, 順序」の組を並べているだけですよ。

SORT関数との違い|どちらを使うべきか

SORT関数とSORTBY関数は、どちらもデータを並べ替える関数です。
用途に応じて使い分けましょう。

比較項目SORT関数SORTBY関数
基準の指定方法列番号(数値)列範囲(直接指定)
複数基準不可(1つだけ)可(ペアで追加)
列の挿入・削除番号がずれる範囲参照なので壊れにくい
列方向ソートTRUE指定で可能不可(行方向のみ)
配列外の列を基準に不可可能
数式の簡潔さ引数が少なくシンプル基準列ごとに範囲指定が必要

SORT関数が向いているケース:

  • 基準が1つだけでシンプルな並べ替え
  • 列方向(横方向)に並べ替えたい場合
  • 配列の先頭列を基準にする場合(=SORT(範囲) だけで済む)

SORTBY関数が向いているケース:

  • 複数基準で並べ替えたいとき
  • 列の挿入・削除が頻繁にある表
  • 表示範囲の外にある列を基準にしたいとき

迷ったらSORTBY関数を選んでおけば、あとから基準を追加しやすいですよ。

実務で使えるSORTBY応用パターン

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

FILTER関数でデータを絞り込んでから、SORTBY関数で並べ替えるパターンです。

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

=SORTBY(FILTER(A2:D8, B2:B8="営業部"), FILTER(C2:C8, B2:B8="営業部"), -1)

ちょっとむずかしく見えますが、やっていることはシンプルです。
FILTER関数で営業部のデータを抽出し、基準列も同じ条件で抽出しています。
SORTBY関数は「配列」と「基準配列」の行数が一致する必要があるので、どちらもFILTERで絞るのがポイントです。

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

担当者部署売上金額日付
高橋営業部550,0002024/4/3
佐藤営業部480,0002024/4/5
伊藤営業部410,0002024/4/8

SORT関数でも =SORT(FILTER(A2:D8, B2:B8="営業部"), 3, -1) と書けます。基準が1つならこちらのほうがシンプルですよ。

SORTBY+PHONETIC関数で五十音順に並べ替える

SORTBY関数は漢字をUnicodeのコードポイント順で比較します。
つまり、日本語の名前を並べ替えても五十音順にはなりません。

五十音順にするには、PHONETIC関数と組み合わせます。

=SORTBY(A2:D8, PHONETIC(A2:A8), 1)

PHONETIC関数がセルのふりがな情報を取り出します。
SORTBY関数がそのふりがなを基準に昇順で並べ替えます。

ただし、CSVから取り込んだデータやコピペしたデータにはふりがな情報がありません。
その場合は、対象セルを選択して Shift + Alt + ↑ を押して手動でふりがなを設定してください。

VSTACK+SORTBYで複数シートを統合して並べ替え

月ごとにシートが分かれているデータを1つにまとめて並べ替えるパターンです。
VSTACK関数でデータを縦に結合してからSORTBYで並べ替えます。

=SORTBY(VSTACK(Sheet1!A2:D8, Sheet2!A2:D8), VSTACK(Sheet1!C2:C8, Sheet2!C2:C8), -1)

VSTACK関数でデータ全体と基準列の両方を結合するのがポイントです。
複数シートのデータを手作業でコピペする必要がなくなりますよ。

よくあるエラーと対処法

SORTBY関数で困ったときは、以下の表を確認してみてください。

症状原因対処法
#SPILL! エラースピル先のセルが空でない展開先のセルを空にする。結合セルも解除する
#VALUE! エラー基準配列が複数列になっている基準配列は1列(または1行)のみに修正する
#VALUE! エラー並べ替え順序が1/-1以外並べ替え順序を1(昇順)か-1(降順)に修正する
#VALUE! エラー配列と基準配列のサイズが不一致配列の行数と基準配列の行数を揃える
#NAME? エラー関数が使えないバージョンMicrosoft 365またはExcel 2021以降にアップデートする
並び順がおかしい数値が文字列として格納されているVALUE関数で数値に変換してから並べ替える
日本語が五十音順にならないふりがな情報の不在SORTBY+PHONETIC関数を使う(上記参照)

最も多いのは「配列と基準配列のサイズ不一致」によるエラーです。FILTER関数と組み合わせるときは、データ全体と基準列の両方に同じFILTER条件を適用してください。

まとめ

この記事では、ExcelのSORTBY関数の使い方を解説しました。
ポイントをおさらいしておきましょう。

  • SORTBY関数は、基準にする列を範囲で直接指定して並べ替える関数
  • 基準と順序のペアを追加すれば複数キーで並べ替えられる
  • 配列の外にある列も基準に使える
  • 列の挿入・削除に強く、数式が壊れにくい
  • FILTER関数と組み合わせると抽出+並べ替えが一発
  • 日本語の五十音順にはPHONETIC関数との組み合わせが必要
  • Microsoft 365 / Excel 2021以降で利用可能

基準が1つだけならSORT関数のほうがシンプルです。
でも複数条件で並べ替えたいなら、SORTBY関数を使ってください。
まずは「部署→売上」のような2キー並べ替えから試してみてくださいね。


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

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