SORTBY関数で列の順番を入れ替える方法|数式だけで表の列を並べ替える

SORTBY関数で列の順番を入れ替える方法|数式だけで表の列を並べ替える

SORTBY関数が、行を基準にデータを並べ替えるための強力なツールであることは、既にご紹介しました。しかし、この関数にはもう一つ、あまり知られていない驚くべき使い方があります。それは、列の順序を入れ替えることです。

レポートを作成する際、「元の表のA列、B列、C列を、C列、A列、B列の順番で表示したい」といった場面はよくあります。通常なら手作業で列をコピー&ペーストするところですが、SORTBYと「配列定数」を組み合わせることで、この作業を数式一発で、しかも動的に行うことができます。

目次

今回のゴール:会員名簿の列の順序を「ランク」「会員名」「年齢」に入れ替える

以下の会員名簿は、「会員名」「ランク」「年齢」の順に列が並んでいます。これを「ランク」「会員名」「年齢」という新しい順序の表として、F列以降に作成することが目標です。

解決策:SORTBY関数と配列定数を組み合わせる

手順:F1 に SORTBY の式を入れて Enter

会員名簿の「会員名・ランク・年齢」の列を、「ランク・会員名・年齢」の順に入れ替えます。 F1 に次の式を入力して、Enter キーを押します❶。

F1 に入れる式
=SORTBY(B1:D8,{2,1,3})
B1:D8 配列(会員名〜年齢){2,1,3} 基準配列(列ごとの番号)
ひとことで会員名・ランク・年齢の列を、{2,1,3} の番号の小さい順(ランク→会員名→年齢)に列ごと並べ替える
式を分けて読むと(色は画像の枠と同じ)
配列B1:D8
どの表の列を入れ替える?
→ 会員名〜年齢(見出しも含む)
基準配列{2,1,3}
列の順番は?
→ 会員名=2・ランク=1・年齢=3(小さい順に並ぶ)
自分の表で使うときは
{ }に、元の列の順に「並べたい順番の番号」を , で区切って書きます。番号の小さい列が左に来ます。例:A〜D 列を D・A・B・C の順に=SORTBY(A1:D50,{2,3,4,1})
  • Microsoft 365・Excel 2021 以降で使えます。結果が広がる先のセルに何か入っていると #SPILL! になります。
  • 番号は横に並べる(, で区切る)と列の並べ替えになります。
エクセルのSORTBY関数と配列定数で名簿の列の順番を入れ替える式と、配列・基準配列を色分けした画面
エクセルのSORTBY関数と配列定数で名簿の列の順番を入れ替える式と、配列・基準配列を色分けした画面

確認:列が「ランク → 会員名 → 年齢」の順になった

エクセルのSORTBY関数で、番号2・1・3の小さい順にランク・会員名・年齢の列が並んだことを色で示した画面
エクセルのSORTBY関数で、番号2・1・3の小さい順にランク・会員名・年齢の列が並んだことを色で示した画面

答えは ランク・会員名・年齢の順の表 になりました❷。式は、次の順に計算しています。

  1. 元の列に番号を付ける:会員名=2・ランク=1・年齢=3
    ⇒ {2,1,3}
  2. 番号の小さい順に、列ごと並べる
    ⇒ ランク → 会員名 → 年齢
ヒント:見出しで順番を決めるなら
番号の代わりに見出しの並びで決めたいときは、XMATCH と組み合わせます(SORTBY と XMATCH)。

サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。

練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

以下のサンプルデータをExcelシートにコピーして、操作の準備をしてください。

ABCD
1No会員名ランク年齢
21成沢 卓也A45
32日比野 健B29
43大崎 由香C53
54水戸 夏美B38
65木下 直樹A24
76村山 美代B40
87野田 亨C33

数式の解説

このテクニックの心臓部は、2番目の引数に入力された {2,1,3} という「配列定数」です。

SORTBY(配列,基準配列1)

  1. 配列 (array): B1:D8
    • 列の順序を入れ替えたい、元のデータ範囲全体を指定します。
  2. 基準配列1 (by_array1): {2,1,3}
    • 【最重要ポイント】 ここに、各列の表示優先順位を数値のリストとして直接書き込みます。この { } で囲まれた数値のリストが「配列定数」です。
    • 配列の列数と、配列定数の要素の数は一致している必要があります。(今回は3列なので、要素も3つ)
    • SORTBY関数は、この配列定数の数値が小さい順に、元の配列の列を並べ替えます。
    今回の{2,1,3}がどのように作用するか見てみましょう。
    • 元の表の1列目(会員名)には、優先順位として「2」が割り当てられます。
    • 元の表の2列目(ランク)には、優先順位として「1」が割り当てられます。
    • 元の表の3列目(年齢)には、優先順位として「3」が割り当てられます。
    SORTBY関数は、この優先順位の数値が小さいものから順に列を並べます。
    • 優先順位「1」を持つ**元の2列目(ランク)**が、新しい表の1列目に来ます。
    • 優先順位「2」を持つ**元の1列目(会員名)**が、新しい表の2列目に来ます。
    • 優先順位「3」を持つ**元の3列目(年齢)**が、新しい表の3列目に来ます。
    結果として、列の順序は「ランク」「会員名」「年齢」となります。

まとめ

SORTBY関数を配列定数と組み合わせるという、この少し変わった使い方は、行の並べ替えという本来の目的を超え、列の構造そのものを動的に制御する強力なツールとなります。

  • 非破壊的: 元の表の列構造を一切変更しません。
  • 動的: 元のデータが変更されれば、並べ替えた結果も自動で更新されます。
  • 柔軟: 配列定数の数値を変えるだけで、どんな列順にも対応できます。(例: {3,1,2}とすれば「年齢」「会員名」「ランク」の順になる)

この裏ワザ的なテクニックをマスターすれば、レポートやダッシュボードのレイアウト作成が格段に速く、そしてスマートになります。ぜひ活用してみてください。

動的配列・スピル系の関数の全体像は、こちらのまとめで整理しています。

列を指定した見出しの順に並べるときは、SORTBYとXMATCHで列を見出しどおりに並べる方法もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次