最終更新日:2020-05-01SORT関数、SORTBY関数(範囲を並べ替え)SORT関数は、範囲または配列の内容を並べ替えます。SORTBY関数は、範囲または配列を対応する範囲または配列の値に基づいて並べ替えます。同じこともできますが、れぞれの関数でなければできないこともあります。関数仕様を確認した後、どのように使うかを実践的に見ていきましょう。SORT関数とSORTBY関数はスピルで登場した新しい関数です。並べ替え処理する元データを指定します。セル範囲または配列です。並べ替えインデックス省略可能。並べ替えのキーを指定します。何列目(または何行目)を基準に並べ替えるかを数値で指定します。範囲の左端列が1(または上端行が1)です。この引数を省略すると、範囲の1列目(1行目)を基準として並べ替えます。この引数は1つしか指定できません、つまり並べ替えに指定できるキーは1つだけです。替えの順序、「昇順」か「降順」を指定します。降順この引数を省略すると、1(昇順)で並べ替えられます。替えを行方向に行うか列方向に行うかを指定します。縦に並べ替えるこの引数を省略するとFALSE(行で並べ替え)で並べ替えられます。TRUE,FALSEは、1,0で指定しても構いません。行・列の表現が分かりづらいので、間違えないようにしてください。一般的なデータ(横に項目、縦にデータ)では、FALSE(行で並べ替え)になります。並べ替え処理する元データを指定します。セル範囲または配列です。並べ替えのキーとして使うセル範囲または配列を指定します。SORT関数では元データ範囲の列位置(行位置)を数値で指定しましたが、SORTBY関数ではセル範囲または配列で指定します。この基準配列は、元データ範囲内にある必要はありません。元データ範囲とは全く別のセル範囲または配列を指定できます。この基準配列の配列の向きによって、並べ替えの向きが決定されます。行方向(縦方向)の配列を指定した場合は行方向(縦方向)に並べ替えます。列方向(横方向)の配列を指定した場合は列方向(横方向)に並べ替えます。ここで指定する範囲または配列の大きさは、元データと同じ大きさにする必要があります。行方向(縦方向)で並べ替える場合は、元データの行数と一致した縦の配列を指定します。列方向(横方向)で並べ替える場合は、元データの列数と一致した横の配列を指定します。替えの順序、「昇順」か「降順」を指定します。降順この引数を省略すると、1(昇順)で並べ替えられます。SORTBY関数のまとめSORT関数、SORTBY関数と、ワークシートの並べ替えの違いワークシートの並べ替えは、指定範囲のデータを並べ替えてしまいますが、SORT関数SORTBY関数は、指定範囲のデータを並べ替えて別のセル範囲に出力します。ワークシートの並べ替えでは、元表のデータをそのままにしておきたい場合は表範囲をコピーしてから行う必要があります。これらの関数を使用すれば、このコピーが不必要になります。関数では、ワークシートの並べ替えにある以下の指定はできません。・先頭行を見出しとして使用する。・全てデータ行として扱われる・大文字と小文字を区別しない・ふりがなを使わないしたがって、このような並べ替えが必要な場合は、今まで通りワークシートで並べ替えを行う必要があります。単純な並べ替え並べ替え対象内の指定列で並べ替えるだけならSORT関数が簡単です。SORT関数=SORT(A2:E51)※「なんちゃって個人情報」です。1列目(A列)をキーとして行方向に昇順で並べ替えしています。[並べ替えインデックス],[並べ替え順序],[並べ替え基準]これらを全て省略しています。省略せずに指定するなら、=SORT(A2:E51,1,1,FALSE)SORTBY関数=SORTBY(A2:E51,A2:A51)1列目(A列)をキーとして行方向に昇順で並べ替えしています。[並べ替え順序]これを省略しています。省略せずに指定するなら、=SORTBY(A2:E51,A2:A51,1)引数において範囲を2度指定しなければならず、このような単純な並べ替えであればSORT関数を使ったほうが良いでしょう。複数キーでの並べ替えキーを連結した作業列を作成しキーとすれば様々な並べ替えに対応できますが、以下では作業列を作成せずに並べ替える場合の例になります。※作業列を使って複数キーを結合して並べ替える事自体は決して悪いものではありません。SORT関数で複数キー並べ替えSORT関数単独ではできませんが、SORT関数をネストすれば可能です。=SORT(SORT(A2:E51,4),5)注意点としては、関数ネストの内側から順に実行される点になります。上記では、性別で並べ替えた後に都道府県で並べ替えられます。優先度の高い並べ替えを外側の関数で指定します。場合によっては、このような使い方をすることもあるかもしれませんが、複数キーの場合はSORTBY関数が便利でしょう。=SORTBY(A2:E51,E2:E51,1,D2:D51,1)並べ替え順序の1は省略できるので、以下でも同じです。=SORTBY(A2:E51,E2:E51,,D2:D51,)ただし、最後の,カンマは省略できないので注意してください。列方向(横方向)で並べ替えSORT関数で列方向(横方向)並べ替え3行目の単価で昇順に並べ替えています。=SORT(B1:F3,3,1,TRUE)SORTBY関数で列方向(横方向)並べ替え=SORTBY(B1:F3,B3:F3)範囲を2度指定しなければならないので、このような場合はSORT関数を使ったほうが良いでしょう。この下で説明しているように、並べ替え範囲外を指定できるSORTBY関数ならではの使い方があります。並べ替え範囲(配列)以外の基準で並べ替えるSORT関数は、並べ替え範囲しか並べ替えのキーが指定できませんが、SORTBY関数は、並べ替え範囲以外をセル範囲または配列で指定できます。列方向(横方向)を指定順序で並べ替え=SORTBY(A2:E51,{2,5,1,4,3})配列定数として、{2,5,1,4,3}これで指定していますが、もちろんセル範囲でも指定できます。=SORTBY(A3:E52,A1:E1)さらに出力先の項目名を利用して、MATCH関数と組み合わせるとより便利に使えます。=SORTBY(A2:E51,MATCH(A1:E1,G1:K1,0))ランダムに並べ替え=SORTBY(A2:F51,RANDARRAY(ROWS(A2:A51)))RANDARRAY関数で行数分の乱数を作り、その乱数を基に並べ替えています。VLOOKUPの結果で並べ替え都道府県コードを別表から取得し、取得したコードで並べ替えます。=SORTBY(A2:F51,VLOOKUP(F2:F51,O:P,2,FALSE))このように、他の関数(特にVLOOKUP系)で取得した順番で並べ替える方法は、今後は頻繁に使われるようになるかもしれません。並べ替え後の結果を見てもそれが正しいかの確認がかなり困難になります。可能な限り作業列を作成し、その列に他の関数の結果を出力して、それを並べ替えのキーとして使うことをお勧めします。列全体を範囲指定する場合スピル関数で一番困るのが、列全体を指定しづらい事です。単純に列全体を指定すると、SORT関数およびSORTBY関数はエラーとなってしまいます。そこで、FILTER関数でデータが空白以外(<>"")の行だけに絞ってみると、=SORT(FILTER(A:E,A:A<>""))一見良さそうですが、見出し行まで並べ替えに入ってしまいます。上記の場合の解決方法としては、データの入っている行の判定方法を工夫することで対応できます。データには、大抵はこのように数値しか入っていない列が存在するはずなので、この手法は幅広く使えるはずです。数値とは限らず、データと見出しを区別することができる判定ならどのような条件でも構いません。AND関数で複数条件を指定するとエラーとなってしまうので、単一条件だけで済むようにしてください。フィルターは定義した条件に基づいたデータ範囲です。範囲または配列の内容を並べ替えます。範囲または配列の内容を、対応する範囲または配列の値に基づいて並べ替えます。一覧表または範囲内から重複データを削除した一覧を返します。0から1までのランダムな数値の配列を返します。1、2、3、4など、配列内の連続した数値の一覧を生成します。範囲または配列を検索し、見つかった最初の一致に対応する項目を返します。一致を返すことができます。配列またはセル範囲内の項目の相対的な位置を返します。見る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)無効な前方参照か、コンパイルされていない種類への参照です。Case)|VBA入門9.メッセージボックス(MsgBox関数)|VBA入門10.マクロとは?VBAとは?VBAでできること|VBA入門ホームエクセル全般エクセル入門SORT関数、SORTBY関数(範囲を並べ替え)このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。アクセスランキングサイトマップ事業案内お問い合わせホームエクセル全般エクセル入門SORT関数、SORTBY関数このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。