指定の範囲から並べ替えたデータを抽出するSORT関数・SORTBY関数!
たくさんあるデータを並べ替えてたデータを使いたい!
そんな時結構あると思います。
今回は、そんな時に便利なSORT関数・SORTBY関数を紹介します!
SORT関数
「配列」は、データの範囲を指定します。範囲だけでなくUNIQUE関数などで返した配列データでもOKです。省略できません。
「[並べ替えインデックス]」は、並べ替えの基準の列(または行)です。範囲の一番左の列(または、一番上の行)が1になります。省略すると「1」になります。
「[並べ替え順序]」は、昇順か降順の指定です。昇順:1、降順-1となります。省略すると昇順です。
「[並べ替え基準]」は、データをどのようにみなすかですね。一般的な列に項目、行にデータがある場合は、FALSEを指定します(省略するとFALSE)、行に項目がある場合のデータは、TRUEで並べ替えができます。
次のサンプルでやってみましょう!
国語列を基準に、昇順で並べ替えをします。
A9セルに次の数式を入力してください。
=SORT(A2:G6, 2)
「配列」には、データのセル範囲「A2:G6」を入れています。
※SORT関数・SORTBY関数は、見出しをいい具合にしてもらえませんので、見出しは別途作成して、関数の「配列」部分も見出しをのけた範囲で指定しています。
並べ替えインデックスに「2」を指定しているので、「配列」で指定した範囲の左から2番目、つまり国語の点数を基準に並べ替えられています。
並べ替え順序は省略しているので「昇順」です。
では、次に算数列を基準に降順に並べ替えてみます。
並べ替えインデックスを「3」で並べ替え順序を「-1」(降順)に設定してみましょう。
=SORT(A2:G6, 3, -1)
算数列を基準に、降順に並べ変わりましたね(^o^)
【複数列で基準を指定】
並べ替えの基準が複数の列になる場合は、一つの列ずつソートして、そのソートした配列をまたソートするという形をとります。ネストするって言いますね(^o^)
文章で書くと分かりにくいですが、数式を見ればなんとなく分かっていただけると思います。
例えば、最初のサンプルですが、3列目(算数列)を基準に降順に並べ替えました。AくんとCくんの得点は同じですが、名前列が昇順に並んでいるので、これを降順に変えて、Cくんを上に表示させる数式を作ります。
数式
=SORT(SORT(A2:G6,1,-1),3,-1)
次のように考えます。
- 内側の「SORT(A2:G6,1,-1)」で名前列を基準に降順に並べ替えます。
- 1で並べ替えたデータを使って、3列目を基準に降順に並べ替えます。
結果は次のようになります。
名前列が降順になったことで、AくんとCくんの位置が入れ替わりましたね(^o^)
【並べ替え基準】
並べ替え基準は省略すると「FALSE」でした。先程のサンプルの形はFALSEでOKのデータの形です。
「TRUE」にしないといけない形は次のようなものです。
行と列を入れ替えたデータです。
こういった並びになっているデータのときは、「並べ替え基準」を「TRUE」に指定します。
次の数式をB9セルに入れましょう。見出しも作ります。
=SORT(B1:F7, 3, 1, TRUE)
SORTBY関数
それでは次に、SORTBY関数についてです。
「配列」は、データの範囲を指定します。範囲だけでなくUNIQUE関数などで返した配列データでもOKです。省略できません。
「基準配列」は、並べ替えの基準の範囲や配列を指定します。省略はできず必須の項目ですが、「配列」で指定した範囲無いにある必要はありません。全く別の場所を指定してもOKです。
「[並べ替え順序]」は、昇順か降順の指定です。昇順:1、降順-1となります。省略すると昇順です。ここで指定した、基準配列の向きによってSORT関数で言う、「並べ替え基準」の向きを指定できます。
同じサンプルでSORT関数と同じことをやってみましょう!
国語列を基準に昇順で並べ替えします。
次の数式をA9セルに入力してください。
数式
=SORTBY( A2:G6, B2:B6 )
範囲は「A2:G6」、並べ替えの基準である「基準配列」は国語列の「B2:B6」
例のごとく、見出しは自分で作ります。
入力すると、国語列を基準に昇順に並べ変わりました。
では次に、算数列を基準に降順に並べ替えましょう。
数式は次です。
=SORTBY(A2:G6, C2:C6, -1)
算数列なので「基準配列」は「C2:C6」です。降順は「-1」
入力すると、3列目・算数を基準に降順に並べ変わります。
まぁでも、こうやってただ並べ替えるだけならSORT関数の方が簡単にできますね。
【複数列で基準を指定】
複数列を基準に並べ替える場合は、SORT関数ではネストを使いました。
SORTBY関数は、元々複数列の並べ替えに対応していますのでわかりやすく書くことができます。
それではSORT関数のところでもやった、名前列と算数列をいずれも降順に並べ替える方法をやってみましょう。
数式
=SORTBY(A2:G6, C2:C6, -1, A2:A6, -1)
SORTBY関数では、配列(並べ替え範囲)の後の「基準配列」「並べ替え順序」を後ろに繋げることで、複数列を基準にした並べ替えができます。前に書いている方から優先順位が高い並べ替えになるので、自分の思った通りの順になっているか確認するようにしてくださいね。
SORT関数で書くよりも、後から見た時にわかりやすく書けるので、これは使えそうです(^o^)
【並べ替え基準】
SORT関数であった、「並べ替え基準」は、SORTBY関数では用意されてはいませんが、「基準配列」の指定で自動的にやってくれます。
行列が入れ替わったデータの形で、算数列を基準に降順に並べ替える数式は以下です。
数式
=SORTBY(B1:F7, B3:F3, -1)
基準配列の範囲の指定が、横長になっています。基準配列をこのような形に指定することで、自動的に横に並び替えを行ってくれます。
【基準配列を範囲外の場所で指定する】
最後に、基準配列を範囲外の場所で指定する方法についてです。これが出来ることによって、昇順や降順だけでなく、指定した順番で並べ替えることが出来るようになります。
どういう意味?って感じですよね。僕も最初はそう思いました(笑)
やったほうが早いと思いますので、パターンを2つ用意しました。
これはめっちゃ使えそうな匂いがしますよ(^o^)
1.配列定数で指定する
数式
=SORTBY(A1:G6, { 2, 3, 4, 5, 6, 7, 1 })
{ 2, 3, 4, 5, 6, 7, 1 }の部分が配列定数となっています。
中に入っている数字は、新しく出来る表で、何列目に表示させるかの順番だと思ってください。
{ 2, 3, 4, 5, 6, 7, 1 }と指定しているので、名前を2番目、国語を3番目・・・英語を7番目、合計を1番目に表示させるという意味です。
※今回は、見出しも一緒に配列(範囲)に指定しています。
A8セルに数式を入れると、指定した順番に並べ変わることが分かります。
2.範囲で指定する
これを、ベタ打ちの配列定数ではなく、ワークシート上の範囲で指定することによって、簡単に表示の順番を変更することができます。
1行目に1行挿入して、表示させたい順番を入れる場所にします。そして、この1行目A1:G1を、基準配列に指定します。
こうすることによって、この1行目に表示させたい順番を入力するだけで、表示の順番を次々に変えることが可能になります。
まとめ
SORT関数・SORTBY関数を紹介しました!元のデータは触りたくないけど、表示させる順番は変えたい!みたいなケースでもりもり使えそうですね(^o^)
コメント