第53回 規定打席未満の選手をランキングから除外する

関数・自動化

前回は「試合数×1.8」の規定打席を関数で自動計算する仕組みを作りました。今回はその値を使って、打席数が足りない選手をランキングの集計対象から自動で除外する条件分岐を作っていきます。

「IFとANDを組み合わせる」と聞くと難しそうに感じるかもしれませんが、考え方はとてもシンプルです。「打席数が規定以上なら打率を表示し、そうでなければ除外する」という2択を、関数の形で書くだけ。さっそく手順を追っていきましょう。

なぜ「除外する」仕組みが必要なのか

前々回(第51回)でも触れましたが、改めて確認しておきましょう。規定打席の除外ロジックがないと、次のような問題が起きてしまいます。

規定打席なしでの打率ランキング(問題あり)

1位:YOSHIDA  打率.400 (5打席のみ)
2位:SUZUKI   打率.636 (30打席)
3位:TANAKA   打率.368 (24打席)
…

YOSHIDAさんは5打席のみの出場で打率.400を記録していますが、これはたった数打席の中でたまたま出た数字にすぎません。それがランキングのトップに出てしまうのは、公平とは言えませんよね。規定打席(18打席)でフィルタをかければ、この選手は自動的にランキング対象から外れます。

IFとANDの役割を整理する

今回使う関数は2つです。それぞれの役割を先に確認しておきましょう。

関数 役割 書き方のイメージ
IF条件を満たすかどうかで、表示する値を切り替える=IF(条件, 真の値, 偽の値)
AND複数の条件がすべて満たされているかを判定する=AND(条件1, 条件2, …)
📝 今回ANDが必要な理由

打率ランキングに載せるには「打席数が規定以上」という条件だけでよさそうに見えますが、実はそれだけでは足りません。「打数が1以上(0除算を防ぐ)」かつ「打席数が規定以上」の2条件を同時に満たす必要があるのです。この「かつ」を表現するのがAND関数で、IFの条件部分に入れ子にして使います。

関数の完成形

年間シートの打率列(例:D列)には、すでに =IFERROR(安打/打数, 0) のような式が入っているはずです。これをランキング用に、「規定打席未満なら除外する」条件付きの式へと書き換えていきます。

✅ 規定打席チェック付きの打率計算式
=IF(AND(E2>=規定打席セル, F2>=1), IFERROR(G2/F2, 0), "")

各引数の意味は次の通りです。

  • E2:打席数(規定打席と比較する列)
  • 規定打席セル:第52回で作った規定打席の自動計算セル(絶対参照で固定)
  • F2:打数(0除算防止のため1以上かチェック)
  • G2:安打数
  • 条件を満たさない場合は ""(空白)を返す→ランキング対象外になる
📝 除外のときに「0」ではなく「””(空白)」を返す理由

打率ランキングをLARGE関数で自動生成するとき(第68回で解説予定)、除外した選手の値が「0」のままだと「打率0.000の選手」としてランキングに紛れ込んでしまいます。「””(空白)」を返しておけば、LARGE関数は空白を無視してくれるので、規定に満たない選手がランキングに出てくる心配がなくなります。

例で動作を確認してみる

たとえば、10試合を消化して規定打席が18になった管理表があったとします。各選手がどう処理されるか、打席数(E列)が18以上かどうかを基準に見ていきましょう。

選手名 打席数 規定(18)クリア 打率の表示 ランキング対象
SUZUKI30.636
YAMAMOTO30.222
YAMASAKI29.286
YAMAOKA29.240
OKADA28.357
SATO27.318
TANAKA24.368
ITO23.227
MORI23.368
OKADA19.200
YAMADA13(空白)
SAITO10(空白)
KANEKO9(空白)
YOSHIDA5(空白)
打席0の選手(複数)0(空白)

打率.400だったYOSHIDAさん(5打席)はきちんと除外され、この例での打率ランキングはSUZUKI(.636)→TANAKA・MORI(.368)→OKADA(.357)の順に落ち着きます。規定打席というフィルタ一つで、ランキングの説得力がぐっと増すのがわかりますね。

関数の読み方をゆっくり解説する

完成した式をもう一度見ながら、何をしているのかを一つずつ追いかけていきましょう。

① IFの「条件」部分
AND(E2>=規定打席セル, F2>=1)

「打席数(E2)が規定打席以上」かつ「打数(F2)が1以上」の両方を満たすかをチェックします。どちらか一方でも満たさなければ、ANDはFALSEを返します。

② IFの「真の値」部分(条件を満たした場合)
IFERROR(G2/F2, 0)

条件を満たした選手には打率(安打÷打数)を計算して表示します。IFERRORは念のための0除算対策ですが、F2>=1の条件はすでにANDで確認済みなので、実際にエラーが起きることはありません。

③ IFの「偽の値」部分(条件を満たさない場合)
""

条件を満たさない選手のセルは空白になります。ランキング用のLARGE関数は空白を無視するため、除外した選手がランキングに紛れ込む心配はありません。

OPSランキングにも同じロジックを使う

打率と同じ考え方は、OPSのランキング用の列にもそのまま応用できます。セル参照を打率からOPSに変えるだけで完成です。

✅ OPS用の除外ロジック
=IF(E2>=規定打席セル, M2, "")

OPSはすでにIFERRORで0が返るように設定済みのため、打数>=1の条件はここでは省略できます。「打席数が規定以上ならOPSの値を表示し、そうでなければ空白にする」というシンプルな1条件だけで十分です。

⚠️ 規定打席セルは必ず絶対参照にする

IF式を2行目から全選手分(30行目など)コピーするとき、規定打席セルへの参照がずれてしまうと「規定なし」の状態と同じになってしまいます。必ず $P$1 のように絶対参照($マーク)で固定してからコピーしてください。

=IF(AND(E2>=$P$1, F2>=1), IFERROR(G2/F2, 0), "")
✅ この記事のまとめ
  • 規定打席未満の選手を除外する式は =IF(AND(打席数>=規定打席, 打数>=1), IFERROR(打率計算, 0), "")
  • 除外した選手のセルは 0 ではなく 空白(””) にする→LARGE関数がスキップしてくれる
  • AND関数で「打席数が規定以上」かつ「打数が1以上」の2条件を同時チェックする
  • OPS用は打席数1条件のシンプルなIFで十分(OPSはIFERROR設定済みのため)
  • 全選手にコピーするときは規定打席セルを絶対参照($マーク)で固定する

次回予告

次回は「表示形式を整える:打率を3桁で表示する方法」。計算式が完成した打率やOPSを、見やすい表示形式(.000や0.000)に整える書式設定のテクニックを解説します。

▶︎ 次回:【第54回】表示形式を整える:打率を3桁で表示する方法

コメント

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