g737|【Excel裏ワザ】SORTBY関数の隠れた神機能!数式だけで列の順番を自由自在に入れ替える方法

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

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

目次

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

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

サンプルデータ

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

Excel-g737-1.xlsx (ダウンロード)

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

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

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

列を入れ替えた表を表示したい先頭のセル(例では F1)に、以下の数式を一度だけ入力します。

※今回は見出しも含めて並べ替えるため、B1:D8のようにヘッダー行から範囲を指定します。

Excel

=SORTBY(B1:D8, {2,1,3})

数式を入力してEnterキーを押すと、指定した順序に列が入れ替わった表全体が、自動的に展開(スピル)されます。

数式の解説

このテクニックの心臓部は、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}とすれば「年齢」「会員名」「ランク」の順になる)

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

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

この記事を書いた人

コメント

コメントする

目次