SORTBYを入れ子にして行と列を同時に並べ替える

SORTBYを入れ子にして行と列を同時に並べ替える

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

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

目次

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

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

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

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

会員名簿の行をランク順に並べ、さらに列を F1:H1 に書いた見出しの順に入れ替えます。 F2 に次の式を入力して、Enter キーを押します❶。

F2 に入れる式
=SORTBY(SORTBY(B2:D8,C2:C8),XMATCH(B1:D1,F1:H1))
SORTBY(B2:D8,C2:C8) 配列(ランク順の名簿)XMATCH(B1:D1,F1:H1) 基準配列(見出しの順番)
ひとことで内側の SORTBY で行をランク順に並べ、外側の SORTBY で列を F1:H1 の見出しの順に入れ替える
式を分けて読むと(色は画像の枠と同じ)
配列SORTBY(B2:D8,C2:C8)
どの表を?
→ ランクの小さい順に並べた名簿
基準配列XMATCH(B1:D1,F1:H1)
列の順番は?
→ 元の見出しが F1:H1 の何番目か
自分の表で使うときは
内側で「行」、外側で「列」を並べ替えます。どちらか片方だけでもよく、組み合わせると 1 つの式で両方できます。例:行を売上の高い順、列を H1:K1 の見出しの順=SORTBY(SORTBY(A2:D50,D2:D50,-1),XMATCH(A1:D1,H1:K1))
  • Microsoft 365・Excel 2021 以降で使えます。結果が広がる先のセルに何か入っていると #SPILL! になります。
エクセルのSORTBY関数を入れ子にして行をランク順、列を見出しの順に並べ替える式を色分けした画面
エクセルのSORTBY関数を入れ子にして行をランク順、列を見出しの順に並べ替える式を色分けした画面

確認:行はランク順、列は見出しの順になった

エクセルのSORTBY関数の入れ子で、行がランクA・B・C順に並び、列がランク・会員名・年齢の順になったことを色で示した画面
エクセルのSORTBY関数の入れ子で、行がランクA・B・C順に並び、列がランク・会員名・年齢の順になったことを色で示した画面

答えは ランク順・見出しの順の表 になりました❷。式は、次の順に計算しています。

  1. 内側の SORTBYで、行をランクの小さい順に並べる
    ⇒ A → B → C
  2. XMATCHで、列の順番の番号を作る
    ⇒ 2・1・3
  3. 外側の SORTBY で、列をその順に入れ替える
    ⇒ ランク・会員名・年齢
ヒント:内側から順に確かめる
まず =SORTBY(B2:D8,C2:C8) だけを入れて行の並びを確かめ、次に外側を足すと、つまずきません。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

サンプルデータ

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

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

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

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

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

この複雑に見える数式は、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(列を処理)

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

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

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

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

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

この記事を書いた人

目次