「SORT」と「SORTBY」は指定範囲/配列の値を並べ替える関数で、並べ替えの基準行または列が「SORT関数」は指定範囲/配列内にあり、「SORTBY関数」は指定範囲/配列内外で複数指定できます。
「SORT関数」は並べ替えの基準となる行または列が、指定範囲/配列に含まれており、先頭行または先頭列でない場合には、何行目または何列目を基準にするかを示す数値を指定することもできます。
一方の「SORTBY関数」は並べ替えの基準は数値ではなく、配列/範囲で指定しますが、その配列/範囲は並べ替える指定範囲/配列内でも外でも指定でき、さらに複数回の並び替えを実行することも可能です。
たとえば以下のような「コーヒー豆の生産量」の表があるとしましょう。
この表を「(飲んだ)銘柄数」の多い順(D列を基準)で並べ替えるなら
「SORT関数」だと「4」列(=D列)を基準にした式で
=SORT(A2:D6,4,-1)
「SORTBY関数」だと「D2:D6」を基準にした式で
=SORTBY(A2:D6,D2:D6,-1)
となり、いずれも「A9」に入力すると同じ結果になります。
「SORTBY関数」なら、最初に「地域」、次に「順位」、というように複数回の並び替えも可能です。
「A9」に
=SORTBY(A2:D6,C2:C6,-1,A2:A6,1)
と入力すると結果は以下のようになります。
これで「南米」「アフリカ」「アジア」と「地域」ごとの順位が分かります。
「SORTBY関数」の構文は以下のようになります。
=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], ...)
[ ] で囲まれた引数は省略可能で、それぞれの役割は
- array で並べ替えの対象となる配列または範囲を指定
- by_array1 で並べ替えの基準となる配列または範囲を指定
- [sort_order1] で「1」で「昇順」、「-1」で「降順」に指定
- [by_array2] で並べ替えの基準となる配列または範囲を指定
- [sort_order2] で「1」で「昇順」、「-1」で「降順」に指定
※ 参照:SORTBY 関数 - Microsoft サポート
となります。
ちなみに「SORT関数」の構文は
=SORT(array,[sort_index],[sort_order],[by_col])
であり「SORTBY関数」にはない [by_col] がありました。
- [by_col] で並べ替えは「行(FALSE)」か「列(TRUE)」か指定
参照:SORT 関数 - Microsoft サポート
つまり「SORTBY関数」は by_array1 で並べ替えの基準となる配列または範囲を指定することで基準が「行」か「列」か分かるので [by_col] は必要ない
ということです。
記事の情報は公開時あるいは更新時のもので、最新情報はリンク先など情報元の公式ページでご確認ください。