SORT関数、SORTBY関数(範囲を並べ替え)
SORT関数は、範囲または配列の内容を並べ替えます。
SORTBY関数は、範囲または配列を対応する範囲または配列の値に基づいて並べ替えます。
同じこともできますが、れぞれの関数でなければできないこともあります。
関数仕様を確認した後、どのように使うかを実践的に見ていきましょう。
SORT関数の書式
並べ替え処理する元データを指定します。
セル範囲または配列です。
並べ替えのキーを指定します。
何列目(または何行目)を基準に並べ替えるかを数値で指定します。
範囲の左端列が1(または上端行が1)です。
この引数を省略すると、範囲の1列目(1行目)を基準として並べ替えます。
この引数は1つしか指定できません、つまり並べ替えに指定できるキーは1つだけです。
FALSE(行で並べ替え)の場合が何列目 ・・・ 通常の表ではこれ
TRUE(列で並べ替え)の場合が何行目
並べ替えの順序、「昇順」か「降順」を指定します。
1 : 昇順
-1 : 降順
この引数を省略すると、1(昇順)で並べ替えられます。
並べ替えを行方向に行うか列方向に行うかを指定します。
TRUE : 列で並べ替え ・・・ 横に並べ替える
FALSE : 行で並べ替え ・・・ 縦に並べ替える
この引数を省略するとFALSE(行で並べ替え)で並べ替えられます。
TRUE,FALSEは、1,0で指定しても構いません。
一般的なデータ(横に項目、縦にデータ)では、FALSE(行で並べ替え)になります。
SORTBY関数の書式
並べ替え処理する元データを指定します。
セル範囲または配列です。
並べ替えのキーとして使うセル範囲または配列を指定します。
SORT関数では元データ範囲の列位置(行位置)を数値で指定しましたが、SORTBY関数ではセル範囲または配列で指定します。
この基準配列は、元データ範囲内にある必要はありません。
元データ範囲とは全く別のセル範囲または配列を指定できます。
つまり、
行方向(縦方向)の配列を指定した場合は行方向(縦方向)に並べ替えます。
列方向(横方向)の配列を指定した場合は列方向(横方向)に並べ替えます。
ここで指定する範囲または配列の大きさは、元データと同じ大きさにする必要があります。
行方向(縦方向)で並べ替える場合は、元データの行数と一致した縦の配列を指定します。
列方向(横方向)で並べ替える場合は、元データの列数と一致した横の配列を指定します。
並べ替えの順序、「昇順」か「降順」を指定します。
1 : 昇順
-1 : 降順
この引数を省略すると、1(昇順)で並べ替えられます。
SORTBY関数のまとめ

SORT関数、SORTBY関数と、ワークシートの並べ替えの違い
SORT関数SORTBY関数は、指定範囲のデータを並べ替えて別のセル範囲に出力します。
ワークシートの並べ替えでは、元表のデータをそのままにしておきたい場合は表範囲をコピーしてから行う必要があります。
しかし、これらの関数を使用すれば、このコピーが不必要になります。
ただし関数では、ワークシートの並べ替えにある以下の指定はできません。
・大文字と小文字を区別する
・ふりがなを使う
・大文字と小文字を区別しない
・ふりがなを使わない
最も単純な並べ替え
SORT関数

※「なんちゃって個人情報」です。
[並べ替えインデックス],[並べ替え順序],[並べ替え基準]
これらを全て省略しています。
省略せずに指定するなら、
=SORT(A2:E51,1,1,FALSE)
SORTBY関数
[並べ替え順序]
これを省略しています。
省略せずに指定するなら、
=SORTBY(A2:E51,A2:A51,1)
複数キーでの並べ替え
※作業列を使って複数キーを結合して並べ替える事自体は決して悪いものではありません。
SORT関数で複数キー並べ替え
都道府県(E列) > 性別(D列) で並べ替えます。

上記では、性別で並べ替えた後に都道府県で並べ替えられます。
つまり、優先度の高い並べ替えを外側の関数で指定します。
SORTBY関数で複数キー並べ替え
=SORTBY(A2:E51,E2:E51,,D2:D51,)
ただし、最後の,カンマは省略できないので注意してください。
列方向(横方向)で並べ替え
SORT関数で列方向(横方向)並べ替え

SORTBY関数で列方向(横方向)並べ替え

しかし、この下で説明しているように、並べ替え範囲外を指定できるSORTBY関数ならではの使い方があります。
並べ替え範囲(配列)以外の基準で並べ替える
SORTBY関数は、並べ替え範囲以外をセル範囲または配列で指定できます。
列方向(横方向)を指定順序で並べ替え



ランダムに並べ替え

VLOOKUPの結果で並べ替え

ただし、並べ替え後の結果を見てもそれが正しいかの確認がかなり困難になります。
可能な限り作業列を作成し、その列に他の関数の結果を出力して、それを並べ替えのキーとして使うことをお勧めします。
列全体を範囲指定する場合
単純に列全体を指定すると、SORT関数およびSORTBY関数はエラーとなってしまいます。


上記の場合の解決方法としては、データの入っている行の判定方法を工夫することで対応できます。

もちろん数値とは限らず、データと見出しを区別することができる判定ならどのような条件でも構いません。
ただし、
AND関数で複数条件を指定するとエラーとなってしまうので、単一条件だけで済むようにしてください。
スピルによって新しく追加された関数
関数名 | 説明 |
FILTER | フィルターは定義した条件に基づいたデータ範囲です。 |
SORT | 範囲または配列の内容を並べ替えます。 |
SORTBY | 範囲または配列の内容を、対応する範囲または配列の値に基づいて並べ替えます。 |
UNIQUE | 一覧表または範囲内から重複データを削除した一覧を返します。 |
RANDARRAY | 0から1までのランダムな数値の配列を返します。 |
SEQUENCE | 1、2、3、4など、配列内の連続した数値の一覧を生成します。 |
XLOOKUP | 範囲または配列を検索し、見つかった最初の一致に対応する項目を返します。 一致が存在しない場合、XLOOKUP は最も近い (概算) 一致を返すことができます。 |
XMATCH | 配列またはセル範囲内の項目の相対的な位置を返します。 |
ワークシート関数の一覧(2010以降)
同じテーマ「エクセル入門」の記事
XLOOKUP関数とスピル入門
スピルについて
FILTER関数(範囲をフィルター処理)
SORT関数、SORTBY関数(範囲を並べ替え)
UNIQUE関数(一意の値)
RANDARRAY関数(ランダム数値)
SEQUENCE関数(連続数値)
XLOOKUP関数(VLOOKUP関数を拡張した新関数)
XMATCH関数(MATCH関数を拡張した新関数)
LET関数(数式で変数を使う)
スピルと新関数の練習(XLOOKUP関数、LET関数、VBAまで)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。