SORTBYで別の列を基準に並べ替える
別の配列の値を使って、ある配列を並べ替えます。
「SORTBYで別の列を基準に並べ替える」はCoddyKit上の無料Excel Formulas Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはExcel Formulas Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Excel Formulas Academyコースには全4レッスンが含まれています。
SORTBY がある理由
SORT は配列の中にある列を基準にデータを並べ替えます。しかし、出力に含まれない別の配列の値を基準に、あるリストを並べ替えたい場合はどうでしょうか。
それを実現するのが SORTBY です。まったく別の範囲の順序を使って1つの範囲を並べ替えられるため、並べ替えの基準列を結果に含めずに、柔軟な複数キーの並べ替えができます。
=SORTBY(A2:A10, B2:B10)SORTBY の構文
SORTBY の形式は次のとおりです。
- array 並べ替えた順序で返すデータ
- by_array1 順序を決める値
- sort_order1 昇順は 1、降順は -1(省略可)
by_array / order の組を追加して、複数のキーで並べ替えることもできます。各 by_array は、並べ替える array と高さ(または幅)が同じでなければなりません。
=SORTBY(array, by_array1, [order1], [by_array2], [order2], ...)非表示のスコアで名前を並べ替える
A2:A10 にプレイヤー名、B2:B10 にスコアが入っているとします。スコアの高い順に名前を並べたリストを作りたいものの、表示するのは名前だけにしたいとします。
SORTBY は名前だけを返し、スコア配列の順序に従って並べ替えます。スコア自体は出力に表示されません。
=SORTBY(A2:A10, B2:B10, -1)SORT と SORTBY の違い
主な違いは次のとおりです。SORT では、基準にした列が結果の一部になります。一方、SORTBY では、並べ替えのキーが別の配列にあり、その配列は返されません。
- 基準列も出力に表示したい場合は SORT を使います
- 裏側の値を基準に、すっきりした出力だけを得たい場合は SORTBY を使います
=SORTBY(A2:A10, C2:C10, 1)外部の列を基準にテーブル全体を並べ替える
返す array には複数の列を含めることができます。A2:B10 に名前とメールアドレス、C2:C10 に優先度の数値が入っているとします。
SORTBY は、結果に優先度を表示せずに、名前/メールアドレスのテーブルを優先度順に並べ替えます。
=SORTBY(A2:B10, C2:C10, 1)複数のキーで並べ替える
同順位をさらに分けるには、by_array / order の組を追加します。SORTBY は指定した順に適用します。最初のキーで並べ替え、2番目のキーで同順位を分け、その後も同様に処理します。
ここでは地域を昇順に並べ、各地域内では売上を降順に並べ替えます。
=SORTBY(A2:C20, B2:B20, 1, C2:C20, -1)計算した配列を基準に並べ替える
by_array は保存された列でなくても構いません。その場で計算した値を基準に並べ替えることもできます。
A2:A10 に商品名、B2:B10 に価格、C2:C10 に原価が入っているとします。利益率をどこにも保存せずに商品を並べ替えるには、SORTBY の中で計算します。
=SORTBY(A2:A10, B2:B10-C2:C10, -1)配列のサイズをそろえる
すべての by_array は、並べ替える array の長さと一致していなければなりません。array が9行なら、各 by_array も9行である必要があります。
サイズが一致しないと、#VALUE! エラーが発生します。範囲の開始行と終了行が同じであることを確認してください。
=SORTBY(A2:A10, B2:B10, -1)Google スプレッドシートで SORTBY を使う
Google スプレッドシートは同じ構文の SORTBY に対応しているため、数式をそのまま利用できます。複数の並べ替えキーや計算した by_array を含め、動作は Excel と同じです。
SORT と同様に SORTBY も結果をスピルするため、下のセルに十分な空きがあることを確認してください。
=SORTBY(A2:C20, B2:B20, 1, C2:C20, -1)SORTBY を FILTER と組み合わせる
SORT と同様に、SORTBY も FILTER と相性がよい関数です。まず必要な行だけを残すように抽出し、その後 SORTBY で残ったデータを並べ替えます。
注意点として、array を抽出する場合は、対応関係を保つため by_array も同じ方法で抽出する必要があります。ここでは、両方の行が一致する場合に限り、抽出した補助列を基準にテーブル全体を並べ替えています。そのため、SORTBY の結果を後から抽出するほうが簡単な場合がよくあります。
=FILTER(SORTBY(A2:C20, C2:C20, -1), SORTBY(B2:B20, C2:C20, -1)="East")実用的なランキング
ここまでの内容を組み合わせて、スコア順にプレイヤー名を表示し、同点の場合は試行回数が少ない順にする、常に更新されるランキングを作成しましょう。
名前が A2:A20、スコアが B2:B20、試行回数が C2:C20 にある場合、SORTBY でスコアを高い順、次に試行回数を少ない順にして順位付けします。どの値を更新しても、順序が自動的に更新されます。
=SORTBY(A2:A20, B2:B20, -1, C2:C20, 1)理解度チェック
名前が A2:A10、スコアが B2:B10 に入っています。名前だけを返し、スコアの高い順に並べたいとします。どの数式を使えばよいでしょうか。
まとめ:SORTBY で並べ替える
SORTBY は、結果に表示しない別の配列の値を使って、1つの配列を並べ替えます。
=SORTBY(array, by_array1, order1, ...)- by_array / order の組を追加して、複数のキーで並べ替えます
- by_array には、保存された列とその場で計算する値のどちらも指定できます
- すべての by_array は array と同じ長さでなければなりません
ランキングのように、裏側の値を基準にすっきりした出力を作りたい場合に最適な関数です。
=SORTBY(A2:A20, B2:B20, -1, C2:C20, 1)よくある質問
「SORTBYで別の列を基準に並べ替える」レッスンは無料ですか?
はい。「SORTBYで別の列を基準に並べ替える」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Excel Formulas Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Excel Formulas Academyコースには全4レッスンが含まれています。
「SORTBYで別の列を基準に並べ替える」で何を学びますか?
別の配列の値を使って、ある配列を並べ替えます。 ブラウザで直接実行するハンズオンコードでExcel Formulas Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Excel Formulas Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのExcel Formulas Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「SORTBYで別の列を基準に並べ替える」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このExcel Formulas Academyレッスンでコードを書いて実行できますか?
はい。すべてのExcel Formulas Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SORTで結果を並べ替える
- SORTBYで別の列を基準に並べ替える
- SEQUENCEで数値を生成する
- RANDARRAYでランダムデータを生成する