ラベルラベル

動的配列・スピル入門

SORTBY関数を見て理解する

別の配列の値を基準に、元の配列を並べ替えて返す関数です。複数のキーを指定すると、先のキーが同じ場合に次のキーで順序を決めます。

3つのポイント

  1. 並べ替える配列を指定する
  2. 別のキー配列を基準にする
  3. 同値なら次のキーで順序を決める
例題Excel仕様

グループ順、同じグループでは得点の高い順に名前を並べる

サンプル数式

  • 並べ替える配列
  • 第1キー
  • 第1キーの順序
  • 第2キー
  • 第2キーの順序

いまの結果:

4行 × 1列
計算結果
結果セル:H2スピル範囲:H2:H5

先頭行:「佐藤」

入力・条件:5項目
  • 並べ替える配列A2:A5(4セル)値の例:「田中」、「佐藤」、「鈴木」
  • 第1キーB2:B5(4セル)値の例:2、1
  • 第1キーの順序E2:1
  • 第2キーC2:C5(4セル)値の例:80、90
  • 第2キーの順序F2:-1
この結果になる理由

指定したキーで並べ替えた結果です。

サンプルデータ

2つの順序を変えてみよう

※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。

「グループ順、同じグループでは得点の高い順に名前を並べる」のサンプルデータ。引数番号は正式引数と教材要素の対応、小さな角丸数字は処理順を表します。
ABCDEFGH
1名前グループ得点 第1順序第2順序 結果
2田中280  佐藤
3佐藤190    鈴木
4鈴木180    高橋
5高橋290    田中
並べ替える配列第1キー第1キーの順序第2キー第2キーの順序起点セルスピル結果
①・②・③・④・⑤ 正式引数 / 教材要素1–6 処理の流れ

E2、F2に値を入力すると、結果と処理順が変わります。

元の位置と結果の対応

元1行目元2行目元3行目元4行目結果1行目結果2行目結果3行目結果4行目

元の4行を並べ替え、結果の4行へ対応させます。

出力先 H2:H5・4セル

5つの引数

色付きの丸数字は、サンプル数式と引数ガイドで同じ引数を示しています。表にも同じ番号があれば、その引数で指定しているセルを示します。

  1. A2:A5表のセル: A2:A5

    並べ替える名前の一覧です。

  2. B2:B5表のセル: B2:B5

    優先して並べるグループ番号です。

  3. E2表のセル: E2

    1で小さい順、-1で大きい順にします。

  4. C2:C5表のセル: C2:C5

    グループ番号が同じときに比べる得点です。

  5. F2表のセル: F2

    1で低い順、-1で高い順にします。

この数式を日本語にすると

名前をグループ番号の小さい順に並べます。同じグループ内では得点の高い順にし、佐藤、鈴木、高橋、田中の順でH2:H5に表示します。

この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。

処理の流れ

手順1〜6を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。

  1. 配列を確認する

    A2A3A4A5

    A2:A5を並べ替える元配列として使います。

  2. 第1キーを確認する

    B2B3B4B5

    B2:B5を第1キーとして確認しました。

  3. 第1キーの並べ替え順を確認する

    E2

    1なので、昇順で並べ替えます。

  4. 第2キーを確認する

    C2C3C4C5

    C2:C5を第2キーとして確認しました。

  5. 第2キーの並べ替え順を確認する

    F2

    -1なので、降順で並べ替えます。

  6. 別の配列を基準に並べ替える

    H2:H5

    第1キーを昇順、第2キーを降順の優先順で並べ替え、4行×1列の結果をH2:H5へスピルします。

対応アプリ

  • Excel

関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。

この例の注意点

  • 並べ替え順は1が昇順、-1が降順です。最初の順序を省略すると昇順になります。
  • キー配列は1列または1行にし、並べ替える配列と対応する行数または列数を揃えます。
  • SORTは配列内の位置を基準にします。SORTBYは別の配列を基準にでき、キーを優先順に追加できます。
  • 結果は複数セルへスピルします。結果を広げる場所は空けておきます。

一般構文

対応:Excelのみ

=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], ...)

[] は省略できる引数です。

省略時

sort_order1
→ 1省略すると、昇順に並べます。
公式資料・確認範囲

公式資料

実機確認

  • Excel 2021計算結果・入力の扱い・エラー・配列展開を確認済み
  • Google スプレッドシート対応状況を確認済み

次に学ぶ関数

カテゴリから探す

次に学ぶおすすめ関数はありません。カテゴリから探しましょう。

カテゴリを見る