以前、以下の記事でSORT関数の使い方について書きました。
SORT関数は1つの条件でソートする関数ですが、1つの条件でのソートだけでなく、複数の条件でソートしたいときがあります。そんな時にSORTBY関数を使用します。
構文と引数の説明
SORTBY関数は範囲または配列の内容を複数の条件で並べ替えます。
SORTBY(配列, 1つ目の並べ替えの基にする配列または範囲, [1つ目の並べ替え順序], [2つ目の並べ替えの基にする配列または範囲 , 2つ目の並べ替え順序],…)
※ []内の引数は任意の項目です。
引数 | 必須 | 説明 |
配列 | 〇 | 並べ替えの対象となる配列または範囲を指定します。空の場合、#VALUE!を返します。 |
1つ目の並べ替えの基にする配列または範囲 | 〇 | 並べ替えの基にする配列または範囲を指定します。ここで指定した列でソートされることになります。ここで指定した範囲のソートが最優先されます。 |
1つ目の並べ替え順序 | 並べ替えの順序を示す数値を指定します。 以下に挙げた数値以外を指定するとVALUE!を返します。 昇順(既定):1 降順:-1 | |
2つ目の並べ替えの基にする配列または範囲 | 並べ替えの基にする配列または範囲を指定します。ここで指定した列でソートされることになります。 | |
2つ目の並べ替え順序 | 並べ替えの順序を示す数値を指定します。以下に挙げた数値以外を指定するとVALUE!を返します。 昇順(既定):1 降順:-1 | |
… | 「並べ替えの基にする配列または範囲」と「並べ替え順序」を対にして最大126個の条件を設定できます。 |
SORTBY関数は「並べ替えの基にする配列または範囲」と「並べ替え順序」は1つ目の条件が最も強く、その次に2つ目の条件・・・といった具合にソートされます。
「配列」および「並べ替えの基にする配列または範囲」は同じサイズである必要があります。つまりは選択した行数が同じということです。そうでないと#VALUE!が返ります。
使用例
以下のようなデータがあったとします。
上記の表を「地区」でソート(昇順)して、次に売り上げでソート(降順)でソートしたいと思います。
F2に以下の数式を入力します。以下の数式は$A$2:$D$8の範囲のデータを、A2:A8の範囲を昇順(1)でソートして、次にD2:D8の範囲を降順(-1)でソートすることを意味します。そうするとF2:I8のような結果を得ることができます。
=SORTBY($A$2:$D$8,A2:A8,1,D2:D8,-1)
ちなみに、以下で紹介したようにテーブル機能を使えば、元のデータのデータが増えたときにも自動で対応できます。
以上です。
コメント