オリジナルの順序で行を並べ替える…SORTBY+XMATCH関数

[Excel 2021以降]

SORTBY関数による単純な並べ替えでは、並べ替えの順序は昇順または降順に限られます。ここではXMATCH関数を組み合わせて、オリジナルの順序で並べ替える方法を紹介します。部署名や商品名などを現場で使用している順序で並べ替えたいときや、都道府県を北から順に並べ替えたいときなどに役立ちます。SORTBY関数とXMATCH関数は、いずれもExcel 2021以降で使用できる関数です。

スポンサーリンク

SORTBY関数の基本的な使い方

まずはSORTBY関数の使い方をおさらいしておきましょう。SORTBY関数は、指定した[基準配列]をもとに[配列]を並べ替える関数です。昇順の並べ替えを行う場合は[順序1]を省略できます。

データを指定した順序で並べ替える
=SORTBY(配列, 基準配列1, [順序1], [基準配列2, 順序2]…)

例えば図1の名簿を「一ノ瀬、二宮、三木谷、四谷」の順に並べ替えるには、準備として作業列の一ノ瀬の行に「1」、二宮の行に「2」、三木谷の行に「3」、四谷の行に「4」を入力しておきます。

図1 名簿を「一ノ瀬、二宮、三木谷、四谷」の順に並べ替えたい。準備として作業列に並び順を入力しておく。

並べ替えた結果を表示するセル(ここではセルF3)を選択して、SORTBY関数を入力します。引数[配列]に名簿のセルA3~C6、[基準配列1]に並び順のセルD3~D6を指定します。

セルF3 | =SORTBY(A3:C6,D3:D6)

図2 セルF3にSORTBY関数を入力して、[Enter]キーを押す。

[Enter]キーを押すと、セルF3~H6の範囲に数式がスピル(隣接するセルに数式が自動拡張すること)し、[基準配列1]の昇順(小さい順)で並べ替えが行われます。結果として[基準配列1]が「1」の一ノ瀬が1行目、「2」の二宮が2行目、……と、名簿が「一ノ瀬、二宮、三木谷、四谷」の順に表示されます。

図3 「一ノ瀬、二宮、三木谷、四谷」の順に並べ替えられた。

なお、SORTBY関数の詳しい使い方は「SORTBY関数 ● データを指定した順序で並べ替える」を参照してください。

方法1 作業列を使って名簿を都道府県の地理順に並べ替える

本題に移ります。オリジナルの順序の例として、図4の名簿を都道府県の地理順に並べ替えましょう。その準備として、空いているセル(K列)に都道府県名を地理順で入力しておきます。ここではJIS規格(JIS X 401)にしたがって入力しました。名簿に含まれていない都道府県も入力していますが、名簿の都道府県だけでもかまいません。また、J列に都道府県コードも入力していますが、この数値は使用しないので入力しなくてもOKです。

図4 名簿を都道府県の地理順に並べ替えたい。K列に都道府県を地理順に入力しておく。

次に、XMATCH関数を使用して名簿の並び順を求めます。XMATCH関数は、[検索値]が[検索範囲]の中で何番目の位置にあるかを求める関数です。

指定した範囲の中から検索値の位置を求める
=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])

作業列のセルD3を選択し、XMATCH関数を入力します。[検索値]に名簿の「都道府県」欄のセルC3~C11、[検索範囲]に都道府県リストを入力したセルK1~K47を指定します。

セルD3 | =XMATCH(C3:C11,K1:K47)

図5 作業列のセルD3を選択し、XMATCH関数を入力して[Enter]キーを押す。

[Enter]キーを押すと、セルD3~D11の範囲に数式がスピルし、各都道府県の位置を表す数値が表示されます。例えば「東京都」はK列の都道府県リストの13番目にあるので「13」と表示されます。

図6 都道府県の位置を表す数値が表示された。例えば「東京都」には「13」が表示される。

最後にSORTBY関数を使用して並べ替えを行います。引数[配列]に名簿のセルA3~C11、[基準配列1]に並び順のセルD3~D11を指定します。数式を入力する際にセルD3~D11をドラッグすると「D3#」が自動入力されます。この「#」は「スピル範囲演算子」と呼ばれるものです。「D3#」は、セルD3に入力した数式がスピルした範囲、すなわちD3~D11を表します。

セルF3 | =SORTBY(A3:C11,D3#)

図7 セルF3にSORTBY関数を入力して[Enter]キーを押す。

[Enter]キーを押すと、セルF3~H11の範囲に数式がスピルし、名簿が並べ替えられます。

図8 名簿が都道府県の地理順に並べ替えられた。

方法2 作業列を使わずに名簿を都道府県の地理順に並べ替える

「方法1」では、XMATCH関数を使用して作業列に都道府県の番号を求め、その番号を元にSORTBY関数で並べ替えを行いました。作業列を使いたくない場合は、SORTBY関数の引数[基準配列1]にXMATCH関数を指定します。

セルF3 | =SORTBY(A3:C11,XMATCH(C3:C11,K1:K47))

図8 SORTBY関数とXMATCH関数を組み合わせて入力すると、作業列を使わなくても都道府県の地理順に並べ替えできる。

スポンサーリンク

関連記事