SORTBY関数が、行を基準にデータを並べ替えるための強力なツールであることは、既にご紹介しました。しかし、この関数にはもう一つ、あまり知られていない驚くべき使い方があります。それは、列の順序を入れ替えることです。
レポートを作成する際、「元の表のA列、B列、C列を、C列、A列、B列の順番で表示したい」といった場面はよくあります。通常なら手作業で列をコピー&ペーストするところですが、SORTBYと「配列定数」を組み合わせることで、この作業を数式一発で、しかも動的に行うことができます。
今回のゴール:会員名簿の列の順序を「ランク」「会員名」「年齢」に入れ替える
以下の会員名簿は、「会員名」「ランク」「年齢」の順に列が並んでいます。これを「ランク」「会員名」「年齢」という新しい順序の表として、F列以降に作成することが目標です。
解決策:SORTBY関数と配列定数を組み合わせる
手順:F1 に SORTBY の式を入れて Enter
会員名簿の「会員名・ランク・年齢」の列を、「ランク・会員名・年齢」の順に入れ替えます。 F1 に次の式を入力して、Enter キーを押します❶。
=SORTBY(B1:D8,{2,1,3} ) B1:D8{2,1,3}{ }に、元の列の順に「並べたい順番の番号」を , で区切って書きます。番号の小さい列が左に来ます。例:A〜D 列を D・A・B・C の順に
=SORTBY(A1:D50,{2,3,4,1} ) - Microsoft 365・Excel 2021 以降で使えます。結果が広がる先のセルに何か入っていると #SPILL! になります。
- 番号は横に並べる(, で区切る)と列の並べ替えになります。

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

答えは ランク・会員名・年齢の順の表 になりました❷。式は、次の順に計算しています。
- 元の列に番号を付ける:会員名=2・ランク=1・年齢=3
⇒ {2,1,3} - 番号の小さい順に、列ごと並べる
⇒ ランク → 会員名 → 年齢
サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。
以下のサンプルデータをExcelシートにコピーして、操作の準備をしてください。
| A | B | C | D | |
| 1 | No | 会員名 | ランク | 年齢 |
| 2 | 1 | 成沢 卓也 | A | 45 |
| 3 | 2 | 日比野 健 | B | 29 |
| 4 | 3 | 大崎 由香 | C | 53 |
| 5 | 4 | 水戸 夏美 | B | 38 |
| 6 | 5 | 木下 直樹 | A | 24 |
| 7 | 6 | 村山 美代 | B | 40 |
| 8 | 7 | 野田 亨 | C | 33 |
数式の解説
このテクニックの心臓部は、2番目の引数に入力された {2,1,3} という「配列定数」です。
SORTBY(配列,基準配列1)
- 配列 (array):
B1:D8- 列の順序を入れ替えたい、元のデータ範囲全体を指定します。
- 基準配列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で列を見出しどおりに並べる方法もあわせてご覧ください。

コメント