スプレッドシート

スプレッドシートSORT関数で自動並べ替え – Excelとの違い

スプレッドシートのSORT関数

スプレッドシートのSORT関数とは

SORT関数は、スプレッドシートでデータ範囲を並べ替える関数です。=SORT(範囲, 並び替える基準の列, 昇順か降順)の形式で使用します。複数列でのソートや、昇順・降順の指定も可能で、大量のデータを整理できる便利な関数です。

SORT関数の構文

=SORT(範囲, 並び替える基準の列, 昇順か降順, [並び替える基準の列2, 昇順か降順2, ...])
  • 範囲:並べ替える対象
  • 並び替える基準の列:並べ替えする際の基準となる列の番号(例:1列目なら1、2列目なら2)
  • 昇順か降順:昇順で並べ替えるか降順で並べ替えるか指定。FALSEか0なら昇順、TRUEか1なら降順
  • 並び替える基準の列2, 昇順か降順2 …:「並べ替える列, 昇順」の次に指定する並び替えの基準
シャワーズ

「並び替える基準の列」と「昇順か降順」はセットで指定する必要があります!

「=SORT(範囲, 並び替える基準の列, 昇順か降順, 並び替える基準の列2」のように、「並び替える基準の列」は2つ、「昇順か降順」は1つのように設定してしまうと、#N/A!のエラーとなるので注意してください!

[基本]SORT関数の使い方

1種類の条件で並び替え

SORT関数を使って1列を基準に並び替えたい場合は、「=SORT(範囲, 並び替える基準の列, 昇順か降順)」のように3つの要素を指定します。たとえば下図の表を、A列の全国ナンバーが小さい数から大きい数になるよう並べ替えたいとします。

この場合「=SORT(A2:D21,1,TRUE)」のように書くと、元表の1列目(A列)が小さい順になるように並べ替えられます。

3つの要素を分解すると次のようになります。これをまとめたのが「=SORT(A2:D21,1,TRUE)」です。

  • 範囲:A2:D21
    • 並べ替えたい表全体の範囲はA2:D21
  • 並び替える基準の列:1
    • 並び替えるときの基準にしたいのは1列目
  • 昇順か降順:TRUE
    • 数字が上るような並び順の昇順としたいのでTRUE
シャワーズ

昇順は数字が上る、降順は数字が下るような並び順を指します!

たとえば「2,3,5,7」は数字が増えていく順番なので昇順、「7,5,3,2」は数字が減っていく順番なので降順です。これは英語や日本語の文字も同じで、例をあげると「a,b,c」は昇順、「さ,か,あ」は降順です。

1列目かつ昇順なら「=SORT(範囲)」に省略可

ちなみに「=SORT(A2:D21,1,TRUE)」のように、2つめの要素が1、3つめの要素がTRUEの場合は「=SORT(A2:D21)」とかけます。1行目を昇順として並び替えたいときには2つめと3つめを省略できるので便利です。

2種類以上の条件で並び替え

SORT関数を使って2列以上を基準に並び替えたい場合は「=SORT(範囲, 並び替える基準の列, 昇順か降順, [並び替える基準の列2, 昇順か降順2, …])」のように、「並び替える基準の列, 昇順か降順」を必要な数だけ繰り返して記載します。

たとえば3列目を昇順として並び替えつつ、3列目が同じ場合には4列目が昇順になるよう並び替える場合には「=SORT(A2:D21,3,TRUE,4,TRUE)」と記載します。

[応用]SORT関数の使い方

列(横方向)の並び替え

SORT関数を行(縦向き)ではなく列(横向き)に並び替えたい場合は、TRANSPOSE関数を使って「=TRANSPOSE(SORT(TRANSPOSE(範囲),並び替える基準の列, 昇順か降順))」のようにかけばOKです。

TRANSPOSE関数は縦横を入れ替える関数です。列(横向き)の並び替えをする際には、一度縦横を入れ替えてSORT関数をした後、再度縦横を入れ替えます。

たとえば下図において1行目の全国ナンバーで並び替えしたいとします。

その場合には「=TRANSPOSE(SORT(TRANSPOSE(B1:J4),1,TRUE))」のように記載すれば並び替えできます。

順を追って説明します。まず、TRANSPOSE関数で縦横を入れ替えます。

次にSORT関数で全国ナンバー順になるように並べ替えます。

そして、もう一度TRANSPOSE関数を使って縦横を入れ替えて完成です!ちなみに、この処理は1列目を昇順で並び替える扱いなので、「並び替える基準の列, 昇順か降順」を省略して「=TRANSPOSE(SORT(TRANSPOSE(B1:J4)))」ともかけます。

離れた範囲の並び替え

A列とD列だけを抽出して並び替えるといったように、離れた範囲を並び替えたい場合には中括弧 { }の記号を用いて「=SORT({範囲1,範囲2…},1,TRUE)」のようにカンマ(,)区切りで範囲を指定します。

たとえば、下図においてA列とD列だけを抽出して並び替えをしたいとします。

この場合は「=SORT({A2:A21,D2:D21},1,TRUE)」と関数を設定すれば並び替えができます。

ちなみに、A2:A21とD2:D21を中括弧「{ }」でくくることで「配列」というものとして扱ってSORT関数を適用しています。配列を知っておくと、SORT関数以外でも応用できるので興味がある方はぜひチェックしてみましょう。

参考) Google ドキュメント エディタ ヘルプ / Google スプレッドシートで配列を使用する

シャワーズ

中括弧「{ , }」を使って指定する場合には、それぞれの範囲で指定する行数が同じになるように気をつけてください!

たとえば「=SORT({A2:A21,D2:D10},1,TRUE)」のように「A2:A21」は20行、「D2:D11」は10行とずれていると、#REF!のエラーが出てしまいます。

離れた範囲を並び替える場合はQUERY関数も有効

離れた範囲の並び替えをする際にはQUERY関数も便利です。QUERY関数はフィルタや並び替え、指定の列のみ表示など多様なことができる関数な一方、SQLと呼ばれるプログラミング言語がもとになっているため書き方にやや癖があります。

たとえば「=SORT({A2:A21,D2:D21},1,TRUE)」と同じ結果を表現したい場合には「=QUERY(A1:D21,”SELECT A,D ORDER BY A ASC”)」のように記載します。

  • A1:D21の範囲をデータ元として
  • A列とD列を表示して
  • A列が降順になるように並び替え

という書き方をしています。

A列にあたる全国ナンバーを表示せずとも、全国ナンバーの昇順で並び替えもできます。

フィルタや”範囲を並び替え”との使い分け

フィルタの並び替えの使い方

スプレッドシートのツールバーにある漏斗のアイコンをクリックすると、全員に対して反映されるフィルタを作成できます。

このフィルタを作成した状態でアイコンをクリックし、「昇順で並び替え」を押すと対象の範囲を並び替えできます。

個人フィルタの並び替えの使い方

ツールバーの表アイコンをクリックし「フィルタビューを作成」をおすと、自分にしか反映されないフィルタを作成できます。

この状態でさきほどのフィルタ同様に「昇順で並び替え」を選択すると、表が並び替えされます。

「範囲を並び替え」の使い方

並び替えしたい対象の範囲を選択した状態にて、メニューバーから「データ」>「範囲を並び替え」>「列◯を基準に昇順(降順)で範囲を並び替え」をクリックすると、並び替えができます。

SORT関数とフィルタ, “範囲を並び替え”の違い

各並べかえの方法にはそれぞれ特徴があるため、用途に応じて使い分けるのがおすすめです。 

特徴用途
フィルタ並び替えや絞り込みができる全員用のフィルタ全員での並べ替え,絞り込み
個人フィルタ並び替えや絞り込みができる個人用のフィルタ個人での並べ替え,絞り込み
範囲を並び替え並び替えをするだけのフィルタ1回限りの並べ替え
SORT関数元の表とは別に並び替えをするための関数元表を残しての並べ替え
シャワーズ

個人的な使い分けとしては次のとおりです!フィルタないし個人フィルタは絞り込みの機能も使えるため、単発の「範囲を並び替え」は実務ではあまり使っていないです。

  • 他閲覧者での表示にも反映してほしい場合→フィルタ
  • 自分にだけ反映してほしい場合→個人フィルタ
  • 元の表の並び順をいじりたくない場合→SORT関数

ExcelのSORT関数やSORTBY関数との違い

ExcelのSORT関数とは

ExcelのSORT関数は、配列数式として機能しデータ範囲を並べ替えます。構文は=SORT(配列, [並べ替えインデックス], [並べ替え順], [列単位])です。例えば、A1:C10のデータを2列目で昇順に並べ替えるには、=SORT(A1:C10,2,1)と入力します。複数列でのソートや降順での並べ替えも可能で、動的に更新される結果を得られる関数です。

=SORT(配列, [並べ替えインデックス], [並べ替え順], [列単位])

ExcelのSORTBY関数とは

ExcelのSORTBY関数は、ある範囲を別の範囲に基づいて並べ替える強力なツールです。構文は=SORTBY(並べ替え範囲, 基準範囲1, [並べ替え順1], [基準範囲2], [並べ替え順2],…)です。例えば、A1:B10を C1:C10の値に基づいて昇順に並べ替えるには、=SORTBY(A1:B10,C1:C10,1)と入力します。複数の基準でのソートや昇順・降順の指定が可能で、柔軟なデータ整理ができます。

=SORTBY(並べ替え範囲, 基準範囲1, [並べ替え順1], [基準範囲2], [並べ替え順2],…)

ExcelのSORT関数やSORTBY関数との違い

ExcelのSORT関数やSORTBY関数と、GoogleスプレッドシートのSORT関数はできることが微妙に異なります。具体的には下表のとおりです。

スプレッドシートのSORT関数ExcelのSORT関数ExcelのSORTBY関数
並び替えの基準列1つ以上1つ1つ以上
並び替える範囲と基準範囲同じ同じ同じも別も可能
シャワーズ

スプレッドシートでSORTBY関数のように、並び替える範囲と基準範囲を分離させたい場合にはQUERY関数を使いましょう!

SORT関数のエラー・注意点

[#REF!]〇〇 のデータを上書きするため、配列結果は展開されませんでした。

「#REF!」のエラーが表示され「〇〇 のデータを上書きするため、配列結果は展開されませんでした。」と文章が出た際には、〇〇にあたるセルの値を削除しましょう。

上図の場合ではF4のセルに入っている文字列を削除すれば、エラーが解消されます。

[#REF!]関数 ARRAY_ROW のパラメータ ◯ の 行 のサイズが一致しません。◯ になっていますが、◯ にしてください。

「#REF!」のエラーが表示され「関数 ARRAY_ROW のパラメータ ◯ の 行 のサイズが一致しません。◯ になっていますが、◯ にしてください。」と警告された場合には、範囲同じ行数になるよう調整しましょう。

上図では「=SORT({A2:A21,D2},1,TRUE)」と書いていてエラーになりました。この場合A2:A21(20行)とD2(1行)のように異なる行数を指定しているため、失敗しています。そこで、「=SORT({A2:A21,D2:D21},1,TRUE)」のようにどちらも20行になるように修正します。

[#N/A!]SORT の 1 より後の引数はすべて、対になっている必要があります。

「#N/A!」のエラーとともに「SORT の 1 より後の引数はすべて、対になっている必要があります。」と表示された場合には、SORT関数に必要な要素を指定できていません

上図では「=SORT(A2:D23,2)」としていますが、SORT関数は「=SORT(◯,◯,◯)」のように3つ(ないし5,7,9…)をカンマ区切りで指定する必要があり、2つのみではエラーとなります。そこで「=SORT(A2:D23,2,FALSE)」のように3つ指定してあげるとエラーが解消されます。