投手成績を表す代表的な指標のひとつ、防御率を求める複合式について解説します。草野球の成績管理表で自責点と投球回から防御率を算出する場面を例に、初心者向けに丁寧に説明します。
防御率計算の複合式とは
防御率は「自責点×9÷投球回」で求まる、9回(1試合分)あたりに換算した自責点の数です。計算そのものは単純な四則演算ですが、成績管理表では投球回を「5.1」「6.2」のような形式で記録することが多く、これをそのまま計算に使うと数字がズレてしまいます。そこで投球回を正しい値に変換してから計算する工夫が必要になる、というのがこの複合式のポイントです。
基本となる式の形はこうです。
=IFERROR(自責点の合計*9/SUMPRODUCT(INT(投球回範囲)+MOD(投球回範囲,1)*10/3),"-")
成績管理表での実例:シーズン通算防御率を出す
大阪グーニーズの投手成績シートでは、各試合の投球回と自責点を1行ずつ記録しています。投球回はH列に「5.1」(5回1アウト)のような形式で、自責点はI列に記録されているとします。
| 試合日 | 対戦相手 | 投球回 | 自責点 |
|---|---|---|---|
| 4/6 | ○○ファイターズ | 5.1 | 2 |
| 4/13 | △△ベアーズ | 6.2 | 3 |
| 4/20 | □□イーグルス | 4.0 | 1 |
| … | … | … | … |
このH列(投球回)とI列(自責点)からシーズン通算の防御率を求めたいとき、式はこうなります。
=IFERROR(SUM(I2:I30)*9/SUMPRODUCT(INT(H2:H30)+MOD(H2:H30,1)*10/3),"-")
この1つの式で、投球回の表記を正しい回数に変換したうえで自責点と組み合わせ、未登板時のエラーまで一括して処理してくれます。
投球回(H2:H30)と自責点(I2:I30)が、それぞれどの列・どの行に入っているかを確認します。
「SUMPRODUCT(INT(H2:H30)+MOD(H2:H30,1)*10/3)」の部分を入力します。これで「5.1」のような表記が実際の回数(5と3分の1)に変換されたうえで、範囲全体の合計が求まります。
「SUM(I2:I30)*9/」に続けてSTEP2の式をつなげます。これで防御率の計算式が完成します。
「IFERROR(…,”-“)」で式全体を囲みます。投球回の合計が0のとき(まだ登板がないとき)に発生する0除算エラーを、ハイフン表示に置き換えられます。
しくみを理解する:この複合式は何をしているのか
投球回の「.1」「.2」という表記は、10進数の小数ではなく1/3・2/3を表す野球独自のルールです。そのままSUMで合計すると、実際の投球回数とはズレた数字になってしまいます。
- INT(範囲)で整数部分(丸々投げた回数)だけを取り出す
- MOD(範囲,1)で小数部分(0.1や0.2)だけを取り出す
- その小数部分に10を掛けて3で割ることで、本来の1/3・2/3という値に変換する
- SUMPRODUCTが、この変換処理を範囲全体に対して一括で行い、そのまま合計まで済ませてくれる
自責点の合計に9を掛けているのは、防御率が「9回(1試合分)あたり」に換算した指標だからです。先発とリリーフのように投球回が大きく異なる投手同士でも、9回換算にすることで比較しやすくなります。最後にIFERRORで包んでいるのは、投球回の合計が0のときに発生する0除算エラー(#DIV/0!)を防ぐためです。
よくあるミス
「5.1」「6.2」のような投球回を、SUMPRODUCTを使わずそのままSUMで合計してしまうケースです。たとえば5.1(5回1/3)と6.2(6回2/3)を単純に足すと11.3になりますが、実際の投球回数は12回ちょうどです。この誤差が積み重なると、防御率全体がずれた数字になってしまいます。
未登板時のエラー対策として代替値を「0」にしてしまうと、「防御率0.00」と表示され、あたかも無失点のエースのように見えてしまいます。まだ登板がないことが一目でわかるよう、ハイフンや「-」など専用の表示にしておくのがおすすめです。
- 防御率は「自責点×9÷投球回」で求まる指標
- 投球回の「.1」「.2」表記はSUMPRODUCT(INT+MOD*10/3)で正しい値に変換してから合計する
- IFERRORで0除算対策をし、未登板の投手にエラーが出ないようにする
次回予告
次回のテーマは「勝率計算の複合式」です。IFとCOUNTIFを組み合わせて、引き分けを除外しつつ0除算にも対応した勝率の実式を解説していきます。
▶︎ 次回:勝率計算の複合式のしくみ



コメント