教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelのSORTBY関数の使い方

構文

構文は以下の通りです。

=SORTBY(配列, 並べ替える範囲1, [順序1], 並べ替える範囲2, [順序2], ...)

解説

SORTBY関数は、指定した範囲のデータを複数の基準で簡単に並べ替えることができます。 

引数 内容
配列 ソートしたいデータの範囲を指定します。
並べ替える範囲1 データをどの列(または行)で並べ替えるかを指定します。
順序1(省略可能) 昇順または降順で並び替えたい場合に指定します。1は昇順、-1は降順です。
並べ替える範囲2 複数の列で並べ替えたい場合に追加で指定します。並べ替える範囲1に続いてどの列(または行)で並べ替えるかを指定します。
順序2(省略可能) 並べ替える範囲2を昇順または降順で並び替えたい場合に指定します。1は昇順、-1は降順です。

使用例

テストの結果が次のようにExcelに入力されている例を元に紹介します。

A列 (名前) B列 (得点)
名前1 85
名前2 90
名前3 85
名前4 78
名前5 90

(例1)得点を降順、名前を昇順で並べる

=SORTBY(A2:B6, B2:B6, -1, A2:A6, 1)

・A2:B6: 並べ替えたいデータ範囲(名前と得点が入っている範囲)です。
・B2:B6: 並び替えの基準になる範囲、全体得点の列です。
・-1: 得点を降順で並べることを指定しています。得点が高い人が上に来ます。
・A2:A6: 得点が同じ場合に並べ替える基準となる名前の列です。
・1: 名前を昇順で並べ替えることを指定しています。名前が順番(五十音順)で並びます。

A列 (名前) B列 (得点)
名前2 90
名前5 90
名前1 85
名前3 85
名前4 78

結果は上記のようになり、得点が高い順(90点が上位)に並べられ、得点が同じ場合、例えば90点の「名前2」と「名前5」は、名前の昇順(五十音順)で並び替えられました。 同様に、85点の「名前1」と「名前3」が名前順に並んでいます。

(例2)得点を昇順、名前を昇順で並べる

=SORTBY(A2:B6, B2:B6, 1, A2:A6, 1)

・A2:B6: 並べ替えたいデータ範囲(名前と得点が入っている範囲)です。
・B2:B6: 並び替えの基準になる範囲、全体得点の列です。
・1: 得点を昇順で並べることを指定しています。得点が低い人が上に来ます。
・A2:A6: 得点が同じ場合に並べ替える基準となる名前の列です。
・1: 名前を昇順で並べ替えることを指定しています。名前が順番(五十音順)で並びます。

A列 (名前) B列 (得点)
名前4 78
名前1 85
名前3 85
名前2 90
名前5 90

結果は上記のようになり、得点が低い順(78点が上位)に並べられ、得点が同じ場合、例えば85点の「名前1」と「名前3」は、名前の昇順(五十音順)で並び替えられました。 同様に、90点の「名前2」と「名前5」が名前順に並んでいます。

まとめ

SORTBY関数は、指定した範囲のデータを複数の基準で簡単に並べ替えることができます。 特に、得点や名前など複数の条件で並べ替えたい場合に便利です。