SORTBYとXMATCHで列の順番を入力した見出しどおりに並べる

SORTBYとXMATCHで列の順番を入力した見出しどおりに並べる

これまでの記事でSORTBY関数を使い、配列定数{2,1,3}などを用いて列の順序を入れ替える裏ワザをご紹介しました。しかし、その方法では列順を変えるたびに数式を書き直す必要があります。

今回はその最終進化形として、XMATCH関数を組み合わせることで、「セルに入力した見出しの順番通りに、列が自動で並び替わる」という、まさに魔法のようなテクニックを解説します。これをマスターすれば、誰でも簡単に操作できるインタラクティブなレポートが作成可能になります。

この記事の基本の式
数式=SORTBY(B2:D8, XMATCH(B1:D1, F1:H1))
目次

今回のゴール:入力した見出しの順序通りに、会員名簿の列を自動で並べ替える

F1からH1のセルに見出しを自由な順序で入力します(例:「ランク」「会員名」「年齢」)。その見出しの順序を数式が自動で読み取り、元の名簿から対応する列のデータを抽出し、並べ替えて表示させることが目標です。

解決策:SORTBY関数とXMATCH関数を組み合わせる

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

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

F2 に入れる式
=SORTBY(B2:D8,XMATCH(B1:D1,F1:H1))
B2:D8 配列(名簿のデータ)XMATCH(B1:D1,F1:H1) 基準配列(見出しの順番)
ひとことで名簿のデータの列を、F1:H1 に書いた見出しの順に並べ替える
式を分けて読むと(色は画像の枠と同じ)
配列B2:D8
どの表の列を入れ替える?
→ 名簿のデータ(見出しは入れない)
基準配列XMATCH(B1:D1,F1:H1)
列の順番は?
→ 元の見出しが F1:H1 の何番目か(会員名=2・ランク=1・年齢=3)
自分の表で使うときは
F1:H1 に「並べたい順の見出し」を書き、XMATCHで元の見出しの順番の番号を作ります。見出しを書き換えるだけで列の順番が変わります。例:H1:K1 に書いた見出しの順に、A2:D50 の列を並べる=SORTBY(A2:D50,XMATCH(A1:D1,H1:K1))
  • Microsoft 365・Excel 2021 以降で使えます。結果が広がる先のセルに何か入っていると #SPILL! になります。
  • F1:H1 の見出しは、元の見出しと 1 文字も違わないようにします(違うと #N/A)。
エクセルのSORTBY関数とXMATCH関数で見出しの順に列を並べ替える式と、配列・基準配列を色分けした画面
エクセルのSORTBY関数とXMATCH関数で見出しの順に列を並べ替える式と、配列・基準配列を色分けした画面

確認:列が F1:H1 の見出しの順になった

エクセルのSORTBY関数とXMATCH関数で、元の見出しの番号2・1・3の順に列が並んだことを色で示した画面
エクセルのSORTBY関数とXMATCH関数で、元の見出しの番号2・1・3の順に列が並んだことを色で示した画面

答えは ランク・会員名・年齢の順の表 になりました❷。式は、次の順に計算しています。

  1. XMATCHで、元の見出し(会員名・ランク・年齢)が F1:H1 の何番目かを調べる
    ⇒ 2・1・3
  2. SORTBY が、番号の小さい順に列を並べる
    ⇒ ランク → 会員名 → 年齢
ヒント:見出しを入れ替えるだけ
F1:H1 を「年齢・ランク・会員名」に書き換えると、式を直さずに列の順番が変わります。

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

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

サンプルデータ

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

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

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

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

数式の解説(内側のXMATCHから理解する)

このテクニックの鍵は、SORTBY関数の2番目の引数(基準配列)を、XMATCH関数を使って動的に生成している点にあります。

ステップ1:XMATCH関数で「優先順位リスト」を自動生成する

まず、内側のXMATCH(B1:D1, F1:H1)が実行されます。

  • 動作: 元の表の見出し(B1:D1)が、出力したい先の見出し(F1:H1)の何番目にあるかを順番に調べます。
  • 詳細:
    • 元の1列目の見出し「会員名」は、出力先F1:H1の2番目にあります。→ 結果は 2
    • 元の2列目の見出し「ランク」は、出力先F1:H1の1番目にあります。→ 結果は 1
    • 元の3列目の見出し「年齢」は、出力先F1:H1の3番目にあります。→ 結果は 3
  • 結果: XMATCH関数は、 {2, 1, 3} という配列を返します。これは、前回の記事で手入力した「配列定数」と全く同じものです。

ステップ2:SORTBY関数が「優先順位リスト」に従って列を並べ替える

XMATCHが生成した配列 {2, 1, 3} を受け取り、SORTBY関数が実行されます。

  • 動作: 数式全体が =SORTBY(B2:D8, {2, 1, 3}) となっているのと同じです。
  • 結果:
    • 優先順位「1」を持つ元の2列目(ランク)が、新しい表の1列目に来ます。
    • 優先順位「2」を持つ元の1列目(会員名)が、新しい表の2列目に来ます。
    • 優先順位「3」を持つ元の3列目(年齢)が、新しい表の3列目に来ます。

この方法の絶大なメリット

この方法の最大の利点は、数式を一切変更することなく、レポートの列順を自由に変更できる点です。例えば、F1:H1の見出しを「年齢」「会員名」「ランク」と書き換えるだけで、XMATCHが返す配列が自動的に{2, 3, 1}に変わり、SORTBYの結果も瞬時に更新されます。

まとめ

SORTBYとXMATCHの組み合わせは、Excelの動的配列機能がもたらす恩恵を最大限に引き出した、非常に高度で実用的なテクニックです。

  • 対話的: 見出しを書き換えるだけで結果が変わる、ユーザーフレンドリーなレポートが作れる。
  • メンテナンスが容易: 列の追加や削除も、見出しの範囲を調整するだけで対応できる。
  • 汎用性が高い: あらゆる表形式のデータに応用可能。

この究極のテクニックをマスターすれば、あなたの作成するExcelシートは、単なる静的な表から、誰もが直感的に操作できる動的なツールへと進化するでしょう。

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

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

この記事を書いた人

目次