g739|【Excel最高峰テクニック】SORTBYを入れ子に!行のソートと列の並べ替えを同時に行う神業

これまでSORTBY関数を使い、「行の並べ替え」や「列の入れ替え」を個別に行う方法を解説してきました。今回は、それらのテクニックを組み合わせ、SORTBY関数を入れ子(ネスト)にすることで、「行と列の並べ替え」をたった一つの数式で同時に実現する、まさに神業と呼べるテクニックをご紹介します。

これをマスターすれば、どんなデータも思いのままに整形できる、真のExcelマスターへと到達できるでしょう。

目次

今回のゴール:行をランク順で並べ替え、かつ列を入力した見出し通りに入れ替える

会員名簿のを「ランク」の昇順(A→B→C)で並べ替えます。同時にの順序をF1:H1に入力した見出し(例:「ランク」「会員名」「年齢」)の通りに入れ替えることが目標です。

サンプルデータ

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

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

以下のサンプルデータをExcelシートにコピーし、F1からH1に表示したい順序で見出しを入力しておきましょう。

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

解決策:SORTBY関数を入れ子(ネスト)にする

並べ替えと入れ替えを同時に行いたい表の先頭セル(例では F2)に、以下の数式を一度だけ入力します。

Excel

=SORTBY(SORTBY(B2:D8, C2:C8), XMATCH(B1:D1, F1:H1))

この数式を入力すると、行はランク順に、列は指定した見出しの順に、完璧に整形された表が自動的に展開(スピル)されます。

数式の解説(内側から外側へ解き明かす)

この複雑に見える数式は、Excelが数式を処理する順序に従って、内側から外側へと読み解くのが理解のコツです。

ステップ1:内側のSORTBYが「行を並べ替える」

まず、Excelは数式の最も内側にあるSORTBY(B2:D8, C2:C8)を実行します。

  • 役割: 行の並べ替え(ソート)を担当します。
  • 動作: B2:D8の会員名簿を、C2:C8(ランク列)を基準に並べ替えます。順序の指定を省略しているので、デフォルトの昇順(A→B→C)でソートされます。
  • 中間結果: この時点で、Excelの内部メモリには、行だけがランク順に並べ替えられた、下のような一時的な表が生成されます。(列の順序はまだ元のまま)
会員名ランク年齢
成沢 卓也A45
木下 直樹A24
日比野 健B29
(以下続く)

ステップ2:XMATCHが「列の優先順位リスト」を作成する

次に、外側のSORTBYの基準配列となるXMATCH(B1:D1, F1:H1)が実行されます。

  • 役割: 列の入れ替え順序を決定します。
  • 動作: 元の見出しB1:D1が出力先の見出しF1:H1の何番目にあるかを調べ、優先順位の配列 {2, 1, 3} を生成します。

ステップ3:外側のSORTBYが「列を入れ替える」

最後に、外側のSORTBY関数が、ステップ1とステップ2の結果を使って最終的な処理を行います。

  • 役割: 列の入れ替えを担当します。
  • 動作: 外側のSORTBYは、**ステップ1で作成された「行がソート済みの表」**を、**ステップ2で作成された「列の優先順位リスト {2, 1, 3}」**に従って、列の順序を入れ替えます。
  • 最終結果: 「行がランク順」で、かつ「列が指定した見出し順」になっている、完璧に整形された表が完成し、セルにスピルします。

まとめ

SORTBY関数を入れ子にするこのテクニックは、Excelの動的配列機能がいかに強力であるかを示す象徴的な例です。

内側のSORTBY(行を処理)→ 外側のSORTBY(列を処理)

というように、関数の処理フローを明確に分けることで、二次元の表を縦横無尽にコントロールできます。

この数式をテンプレートとして保存しておけば、どんなデータに対しても、見出しを書き換えるだけで瞬時に目的の形式のレポートを作成できるようになります。これはもはや単なる表計算ではなく、高度なデータ整形ツールと言えるでしょう。ぜひこの究極のテクニックを習得し、データ活用の可能性を最大限に広げてください。

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

この記事を書いた人

コメント

コメントする

目次