第73回 SORT・FILTER関数で自動ソートする

関数・自動化

前回まで、LARGE・INDEX・MATCHを組み合わせてランキングを作ってきました。機能としては完成していますが「式が複雑で覚えにくい」と感じた方もいるかもしれません。今回紹介するSORT・FILTER関数を使うと、同じことがずっとシンプルな式で実現できます。

ただし1つ注意点があります。SORT・FILTERはGoogleスプレッドシート専用の比較的新しい関数で、Excelでは動作しません(Excel 365では一部使えますが挙動が異なります)。この連載はGoogleスプレッドシートを前提としているので問題ありませんが、覚えておいてください。

SORT関数とFILTER関数、それぞれ何をする関数か

📝 2つの関数の役割
関数 一言でいうと ランキングでの役割
SORT 範囲を指定した列で並べ替えて出力する 安打・打点・盗塁などを多い順に並べてランキング表を作る
FILTER 条件を満たす行だけを抽出して出力する 「打席数18以上の選手だけ」など条件付きで絞り込む

この2つを組み合わせると「規定打席以上の選手だけを打率降順に並べる」という打率ランキングが、驚くほど短い式で作れます。

SORT関数の基本構造

📝 SORT関数の構造
=SORT(範囲, 並べ替え列, 昇順か降順か)
引数 意味 今回の設定
範囲 並べ替えたいデータ全体 年間(野手)シートの選手名〜盗塁列まで
並べ替え列 「何列目の値で並べるか」を数値で指定 範囲の中で安打が何列目かを数える
昇順か降順か FALSE で降順(大きい順)、TRUE で昇順 ランキングなのでFALSE(降順)を使う

年間(野手)シートの B2:J25(選手名〜盗塁)を安打(G列=範囲の中で6列目)の降順で並べる式はこうなります。

✅ SORT関数で安打ランキングを作る式
=SORT('年間(野手)'!B2:J25, 6, FALSE)
  • B2:J25:選手名(B列)から盗塁(J列)まで全列を範囲に含める
  • 6:範囲の左から数えて6列目=G列(安打)で並べ替える
  • FALSE:降順(安打が多い順)で出力する

この1つの式を1つのセルに入力するだけで、安打が多い順に並んだ表全体が自動で展開されます。これをGoogleスプレッドシートでは「スピル(溢れ出し)」と呼びます。

SORT関数の結果を実データで確認する

年間(野手)シートの実データにSORT関数を適用すると、上位は次のようになります。

表示順 選手名 安打 備考
1 SUZUKI 14 単独1位
2 NAKATA 10 単独2位
3 TANAKA 7 同率3名(TANAKA・YAMADA・SAKAI)を元の行順に表示
4 YAMADA 7 同上
5 SAKAI 7 同上

LARGE・INDEX・MATCHでは同率3名が「TANAKA・TANAKA・TANAKA」と繰り返し表示されていました。SOTRを使うと同率の選手が元のシートの行順にそのまま並ぶため、自然に別々の名前が表示されます。前回の補助列不要で、同率問題が自動的に解消されるのが大きなメリットです。

FILTER関数の基本構造

📝 FILTER関数の構造
=FILTER(範囲, 条件)
引数 意味 今回の設定
範囲 抽出したいデータ全体 年間(野手)シートの選手名〜盗塁列まで
条件 「どの行を残すか」を判定する式 打席数列 >= 規定打席

条件を満たす行だけが結果として出力されます。LARGE・IF配列数式の代わりに、FILTERで「対象外の選手を除く」ことができます。

盗塁が1個以上の選手だけを抽出する式はこうなります。

=FILTER('年間(野手)'!B2:J25, '年間(野手)'!J2:J25>0)

J列(盗塁)が 0 より大きい行だけが抽出されます。盗塁0の選手(試合に出ていても盗塁なし)は表示されません。

SORT+FILTERの組み合わせ:打率ランキングへの応用

2つを組み合わせると、打率ランキングの規定打席条件付きが1つの式で書けます。第70回では配列数式(Ctrl+Shift+Enter)が必要でしたが、SORT+FILTERなら通常のEnterで確定できます

✅ SORT+FILTERで打率ランキングを作る式
=SORT(
  FILTER('年間(野手)'!B2:J25, '年間(野手)'!E2:E25>=$H$1),
  3, FALSE
)
  • FILTER(…, E2:E25>=$H$1):打席数(E列)が規定打席(H1セル)以上の選手だけを抽出
  • SORT(…, 3, FALSE):そのFILTER結果を3列目(D列=打率)の降順で並べ替える

FILTERで「規定打席クリア」、SORTで「打率の高い順」——2役を2つの関数で分担しています。配列数式ではないので、通常のEnterで確定するだけです。

実データで確認します。規定打席18以上かつ打率降順の結果はこうなります。

表示順 選手名 打率 打席数
1 SUZUKI .636 30
2 TANAKA .368 24
3 SAKAI .368 23
4 NAKATA .357 28
5 YAMADA .318 27

規定打席未達のY.KATAMOTOさん(打率.400・5打席)が除外され、同率2位のTANAKAとSAKAIも別々に正しく表示されています。第70回の配列数式+第72回の補助列方式で実現していたことが、この1式で完結しています。

スピル(溢れ出し)の仕組みを理解する

SORT・FILTERを使うときに1つ知っておきたいのが「スピル」です。

📝 スピルとは

SORT・FILTER関数は結果が複数行・複数列になります。式を入力した1つのセルから、結果が必要な分だけ自動で隣接するセルに溢れ出す——これがスピルです。

注意点 対処法
スピル先のセルに別のデータが入っていると #SPILL! エラーになる SORT・FILTERを入力するセルの右・下を空けておく
スピルで展開された範囲は直接編集できない 編集したいときは元の式(左上セル)を修正する
選手が増減すると展開行数も自動で変わる これはメリット——データが増えても自動対応

LARGE・INDEX・MATCHとSORT・FILTERを比較する

2つのアプローチは「どちらが正解」ではなく、用途によって使い分けます。

✅ 2つのアプローチの比較
観点 LARGE・INDEX・MATCH SORT・FILTER
式の複雑さ やや複雑(3関数の組み合わせ) シンプル(1〜2関数)
同率の扱い 補助列が必要 自動で別々に表示
表示行数の制御 「上位5位まで」など行数を固定しやすい 全員分が出力される(行数制御が必要なら別途対応)
Excelとの互換性 Excelでも動く Googleスプレッドシート専用(Excel非対応)
配列数式(Ctrl+Shift+Enter) 規定打席条件付きは必要 不要(通常のEnterで確定)
スピルの管理 不要(セルごとに式を入れる) スピル先を空けておく必要がある

どちらを使えばいいか:シンプルな使い分けの目安

SORT・FILTERがおすすめな場面
  • 「上位5位まで」という行数制限が不要で、全選手を並べ替えて表示したいとき
  • 同率の扱いを自動化したい(補助列を管理したくない)とき
  • 式をできるだけシンプルに保ちたいとき
LARGE・INDEX・MATCHがおすすめな場面
  • 「打率TOP5だけ表示」など、表示行数を厳密に固定したいとき
  • ランキングシートの特定のセル範囲に値を収めたいレイアウト設計のとき
  • ExcelとGoogleスプレッドシートの両方で使える式にしたいとき
⚠️ SORT・FILTERで上位N件だけ表示したい場合

SORT・FILTERは全行出力されます。「上位5件だけ」に絞りたい場合は、さらに外側を ARRAY_CONSTRAIN で囲みます。

=ARRAY_CONSTRAIN(SORT(FILTER(…), 3, FALSE), 5, 9)

ARRAY_CONSTRAIN(配列, 行数, 列数) で「上5行・全9列」に切り取れます。ただし式がやや複雑になるため、「上位N件だけ」にこだわるなら LARGE・INDEX・MATCH のほうがすっきりする場合もあります。

✅ この記事のまとめ
  • SORT関数=SORT(範囲, 何列目, FALSE) で指定列の降順に並べ替える——1式で全選手のランキング表が自動展開される
  • FILTER関数=FILTER(範囲, 条件) で条件を満たす行だけを抽出する——規定打席未達の選手を除外するのに使える
  • SORT+FILTERの組み合わせで、第70回の配列数式+第72回の補助列が不要になり、打率ランキングが通常のEnterだけで完成する
  • 同率の選手が自動で別々に表示されるのがSORT・FILTERの大きなメリット
  • 「上位N件に固定」「Excel互換」が必要なら LARGE・INDEX・MATCH のほうが向いている——どちらが正解ではなく用途で使い分ける
  • 次回はランキングシートの見た目を整える——背景色・フォント・罫線でランキング表を見やすくする

次回予告

次回は「ランキングシートの見た目を整える」。ここまでの回でランキングシートの計算式はすべて完成しました。最後の仕上げとして、背景色・フォント・罫線の設定でランキング表をチームメンバーが見やすい形に整えます。条件付き書式を使って1位を自動的に目立たせる方法も解説します。

▶︎ 次回:【第74回】ランキングシートの見た目を整える

コメント

タイトルとURLをコピーしました