エンジニア引き止めセミナー資料
エンジニア引き止めセミナー資料

フィルタ不要で並び替えができる夢のようなSORT関数【Googleスプレッドシート/Excel】

ゆりえ

こんにちは。経営企画室のゆりえです。

これまでのLIGブログでは、Excelやスプレッドシートの活用法に関する記事を書いてきました。

表計算において、データを並べ替えたいとき、フィルタ機能を使うことが多いと思います。今回は、そんなフィルタを使わずに並べ替えたデータを表示できるSORT関数についてまとめました。

SORT関数

使い方

関数の説明はこちらです。

※記事内の画像はGoogleスプレッドシートで作成し、数式の表記もスプレッドシートをメインとしています。Excelでも部分的に同じように利用することができます。

関数
Googleスプレッドシート
=SORT(範囲, 並べ替える列, 昇順(TRUE)or降順(FALSE) [ , 並べ替える列2 , 昇順or降順2 , …] )

※[ ]は条件を2つ以上指定する場合です。カッコは入力しません。

Excel(Excel for Microsoft 365以降で対応)
=SORT(範囲, 並べ替える列, 昇順(1)or降順(-1) )

※Excelの場合、指定できる条件は1つです。

SORT関数は、指定した範囲のデータを、指定した列で昇順もしくは降順で並べ替えて、別の場所に表示することができる関数です。スプレッドシートでは複数の条件を指定することが可能です。

  • 並べ替える列・・・指定した範囲の中で並べ替えたいデータの列数です。左から1列目を「1」、2列目を「2」と数字で指定します。
  • 昇順・・・値が小さい順(1→10、A→Z、あ→ん)、日付が古い順。スプレッドシートでは「TRUE」、Excelでは「1」と入力します。
  • 降順・・・昇順と反対の、値が大きい順(10→1、Z→A、ん→あ)、日付が新しい順。スプレッドシートでは「FALSE」、Excelでは「-1」と入力します。

この関数の特徴は、一箇所に入力するだけで、それ以外の複数のセル・範囲に計算結果を表示することができるところです。

並べ替える

例題として、画像のような表があります。この表のデータをSORT関数を使って並べ替えてみます。

日付の順番がバラバラになっているので、右側のF3:H14の範囲に昇順(日付が古い順)に並べ替えます。

F3のセルに下記のように数式を入力します。

=SORT( B3:D14 , 1 , TRUE )
※Excelの場合はTRUEではなく「1」

 

すると、「日付」が昇順に並び変わったデータが表示されました。

これにより、F3のみに入力するだけで、それ以外のセルにも計算結果が反映されることがわかります。

次に、品名を降順に並べ替えてみましょう。

=SORT( B3:D14 , 2 , FALSE )
※エクセルの場合はTRUEではなく「-1」

品名は左から2列目なので、数式の列数のところには「2」、並べ替えたい順番は降順なので「FALSE」と入力します。

すると今度は、日付の順序はバラバラですが、品名が降順(あいうえおを後ろから並べた順)に並び替わりました。

このように、ひとつのセルに数式を入力するだけで、指定した範囲のデータのうち、任意の列を昇順・降順で並べ替えたデータを表示できるのがSORT関数の特徴です。

結果を表示するための注意

SORT関数はひとつのセルに数式を入力することで、その他のセルにも結果を表示できる関数です。そのため、結果が表示されるべきセルにデータが入っていたり、結果を編集しようと上書きしてしまうと、結果が表示できないのでエラーになります。

F10のセルに「aaa」と入力されているため、SORT関数の結果がエラーとなりました。このように、SORT関数を使う場合は、結果を表示する範囲にデータが入っていないかどうか気をつける必要があります。

応用してみる

以下は、スプレッドシートの場合の応用編です。

並べ替えの条件を複数指定したいとき

複数の列に対して昇順・降順の条件を指定する場合は、数式の後ろに2つ目以降の条件(列と昇順or降順)を追記します。

=SORT( B3:D14 , 2 , FALSE, 1 , TRUE )

これは、品名を降順で並べ替え、さらにその商品ごとに日付を昇順で並べ替えたいという場合です。

並び替わりました!

複数条件を指定した場合、先にある条件のほうが優先順位が高い計算結果が表示されることがわかります。今回の場合は、品名>日付の優先順位となっています。

条件が3つ以上の場合も、同じルールで指定することが可能です。

離れた範囲に対して並べ替えたいとき

「日付」と「個数」など、離れた範囲のデータを抽出して並べ替えることができます。その場合は範囲を{}で囲み、表示したい範囲を「,」で繋ぐことで離れた範囲のデータをくっつけて結果を表示することができます。

=SORT({ B3:B14 , D3:D14 }, 1 , TRUE )

フィルタとSORT関数の使い分け

単純に並べ替えられるだけだと、フィルタの並べ替え機能でもいいのでは? と思うかもしれません。しかし、どんなデータを扱うのかによって、SORT関数が本領を発揮します。

もとのデータベースをいじりたくない場合

なんらかの理由によってデータベースを並べ替えたり変更を加えられない場合に、範囲のデータをいじらずに別の場所で表示し並べ替えられるので便利です。

反対に、別の場所に表示したくない・データベースだけで一時的に並べ替えたい場合などはフィルタのほうが使いやすい場合もあります。

データに変更があっても自動反映できる

これがフィルタよりも優れている大きな点です!

データが固定ではなく増減・変更がよくある場合は、フィルタをかけていても新しい変更に対し適応しきれません。しかし、SORT関数を使うことで、データベースの変更に対し常に自動反映することが可能となります。

例によって、データベースにデータを1つ追記してみます。

=SORT( B3:D , 2 , FALSE, 1 , TRUE )

範囲を指定する際の注意点として、「B3:D14」のように範囲の下端を指定してしまうと、15行目以下にデータが増えた時に対応できないので、「B3:D」や「B3:D1000」のように範囲を大きく取っておくことをお勧めします。

図のように、データを追加すると、その瞬間にSORT関数の結果にも反映されます。変更が入ってもフィルタを掛け直す必要がないのは大きなメリットですね!

さいごに

SORT関数についてお話させていただきました。

データの内容や目的によって、フィルタとSORT関数とうまく使い分けができると思います。

個人的には、一箇所に数式を入れるだけで全体に対応できるところや、複数の並べ替えの条件指定ができるので、フィルタを手動でなんども適用する必要がないところがすごく便利だなあと思ってよく利用しています(あと、一箇所入力するだけでばーっとデータがいっぱい出てくるのがかっこよくて楽しいのでおすすめしたいです)。