SORTBY
関数が、行を基準にデータを並べ替えるための強力なツールであることは、既にご紹介しました。しかし、この関数にはもう一つ、あまり知られていない驚くべき使い方があります。それは、列の順序を入れ替えることです。
レポートを作成する際、「元の表のA列、B列、C列を、C列、A列、B列の順番で表示したい」といった場面はよくあります。通常なら手作業で列をコピー&ペーストするところですが、SORTBY
と「配列定数」を組み合わせることで、この作業を数式一発で、しかも動的に行うことができます。
今回のゴール:会員名簿の列の順序を「ランク」「会員名」「年齢」に入れ替える
以下の会員名簿は、「会員名」「ランク」「年齢」の順に列が並んでいます。これを「ランク」「会員名」「年齢」という新しい順序の表として、F列以降に作成することが目標です。
サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。
Excel-g737-1.xlsx (ダウンロード)
以下のサンプルデータを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 |
解決策:SORTBY関数と配列定数を組み合わせる
列を入れ替えた表を表示したい先頭のセル(例では F1)に、以下の数式を一度だけ入力します。
※今回は見出しも含めて並べ替えるため、B1:D8のようにヘッダー行から範囲を指定します。
Excel
=SORTBY(B1:D8, {2,1,3})
数式を入力してEnterキーを押すと、指定した順序に列が入れ替わった表全体が、自動的に展開(スピル)されます。
数式の解説
このテクニックの心臓部は、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}
とすれば「年齢」「会員名」「ランク」の順になる)
この裏ワザ的なテクニックをマスターすれば、レポートやダッシュボードのレイアウト作成が格段に速く、そしてスマートになります。ぜひ活用してみてください。
コメント