第7章は、投手成績を数値化する関数づくりのパートです。第58回のテーマは投球回の小数表記(1.1・1.2)を正しい数値に変換する方法。ここを乗り越えれば、防御率の正確な算出にぐっと近づきます。
投手成績を扱ううえで、最も厄介なのが「投球回」の処理です。野球の投球回は「1回1/3」「2回2/3」のように3分の1イニング単位で記録される一方、フォームには「1.1」「2.2」という小数で入力します。実はこの数字、見た目は小数でも中身はまったく別物です。今回は、その独特なルールと変換の仕組みを一つずつ丁寧に見ていきましょう。
投球回の小数表記とは何か
フォームでは、投球回を次のルールに沿って入力します。
| フォーム入力値 | 意味 | 実際のイニング数 |
|---|---|---|
| 1.0(または1) | 1回ちょうど | 1.000… |
| 1.1 | 1回1/3 | 1.333… |
| 1.2 | 1回2/3 | 1.666… |
| 2.0(または2) | 2回ちょうど | 2.000… |
| 2.1 | 2回1/3 | 2.333… |
| 2.2 | 2回2/3 | 2.666… |
野球の1イニングは3アウトで成立します。つまり1アウトごとに「1/3イニング」が積み上がっていく計算です。この仕組みをそのまま数字に落とし込んだのが小数点以下の表記で、「.1」は「1アウト=1/3イニング」、「.2」は「2アウト=2/3イニング」を意味します。小数点以下の「1」「2」は10分の1・10分の2ではなく、3分の1・3分の2を表している点に注意してください。
なぜそのまま足し算できないのか
試しに「1.1+1.2」を計算してみましょう。本来なら「1回1/3+1回2/3=2回ちょうど」になるはずです。ところがスプレッドシートはこれを普通の小数として計算するため、答えは「2.3」。これは「2回1/3」という誤った値になってしまいます。
KANEKOさんの投球回(フォームデータより) 1試合目:1.1(1回1/3) 2試合目:4.0(4回) 3試合目:2.0(2回) 4試合目:5.0(5回) 単純合計:1.1 + 4 + 2 + 5 = 12.1 ←「12回1/3」? 実際は:1回1/3 + 4回 + 2回 + 5回 = 12回1/3 → 12.1 = 正解 ※たまたま合っているように見えるが…
KANEKOさんのケースはたまたま正しい答えになっただけで、実はここに落とし穴があります。たとえば「1.1+1.2」のように小数部分の合計が3以上になると、とたんに計算が狂ってしまうのです。
間違いの例: 1.1 + 1.2 = 2.3 → スプレッドシートは「2回1/3」と判断 正しくは:1回1/3 + 1回2/3 = 2回ちょうど = 2.0
変換ロジック:INT関数とMOD関数を使う
小数表記の投球回を正しいイニング数(実数)に変換するには、整数部分と小数部分を分けて処理する必要があります。
投球回の入力値(例:1.2)を、2つのパーツに分解して考えます。
- 整数部分(完全なイニング数):1.2 の「1」→ そのまま 1
- 小数部分(端数のアウト数):1.2 の「.2」→ 2/3 イニングに変換
これらを足し合わせると:1 + 2/3 = 1.666…(正しい実数イニング)
この変換を実現してくれるのが、INT関数(整数部分を取り出す)とMOD関数(小数部分を取り出す)の組み合わせです。
| 関数 | 役割 | 例:1.2 に使うと |
|---|---|---|
INT(1.2) | 小数点以下を切り捨てて整数を取り出す | → 1(整数部分) |
MOD(1.2, 1) | 1で割った余り=小数点以下を取り出す | → 0.2(小数部分) |
=INT(A1) + MOD(A1, 1) * 10 / 3
式の意味を分解すると:
INT(A1):整数部分をそのまま取り出す(完全なイニング数)MOD(A1, 1):小数部分を取り出す(例:1.2 → 0.2)* 10 / 3:小数部分(0.1 や 0.2)をアウト数に換算。0.1→1/3、0.2→2/3 になるよう ×10÷3 で変換
小数部分が「0.1」のとき、これは「1アウト=1/3イニング」を意味しています。0.1を1/3に変換するには「0.1 × 10 ÷ 3 = 0.333…」という計算をすればよく、これで正しい値が得られます。
同じように「0.2」は「0.2 × 10 ÷ 3 = 0.666…」で2/3になります。ここでのポイントは順序です。いきなり「÷3」すると0.1が0.033という中途半端な値になってしまうため、先に「×10」して0.1→1に整えてから「÷3」する必要があります。
サンプルデータで変換を確認する
例えば、こんな投手フォームのデータがあったとして、変換結果を確認してみましょう。
| 選手名・登板 | 入力値 | 変換後の実数 | 読み方 |
|---|---|---|---|
| SUZUKI(第1試合) | 3.0 | 3.000 | 3回 |
| KANEKO(第1試合) | 1.1 | 1.333… | 1回1/3 |
| SATO(第1試合) | 0.2 | 0.666… | 0回2/3 |
| SATOの年間合計 | — | 6.666… | 6回2/3 |
| KANEKOの年間合計 | — | 12.333… | 12回1/3 |
この例で見ると、SATOさんの投球回は「6回2/3」、KANEKOさんは「12回1/3」ときちんと変換されており、変換ロジックが正しく機能していることがわかります。第1試合の「0.2回(0回2/3)」が正しく 0.666 として扱われている点にも注目してください。
変換関数の使いどころ:防御率計算の下準備
この変換関数は、防御率(ERA)の計算で直接役立ちます。防御率は「自責点 × 9 ÷ 投球回(実数)」で求めるため、投球回が正しい実数に変換されていないと、そのまま誤った防御率になってしまいます。
防御率 = 自責点 × 9 ÷ 変換後の投球回(実数) SUZUKIさんの例: 入力の投球回合計(小数表記):3+7+1+4+2+... = 22回(変換後 22.000) 自責点合計:4 防御率 = 4 × 9 ÷ 22 = 1.636… ≒ 1.64 ← 年間シートと一致 ✅
複数登板の投球回を正しく合算する方法は、次回(第59回)で詳しく解説します。今回はまず、「変換の考え方」をしっかり押さえておきましょう。
- 投球回の小数表記は普通の小数ではない。「.1=1/3イニング」「.2=2/3イニング」を意味する
- そのまま足し算すると「1.1+1.2=2.3(誤)」になる。正しくは「2.0(2回ちょうど)」
- 変換式は
=INT(A1) + MOD(A1, 1) * 10 / 3。整数部分はそのまま、小数部分を×10÷3で換算する INTで整数部分、MODで小数部分をそれぞれ取り出すのがポイント- 変換後の実数が防御率計算の分母になる。次回はこの変換を使った複数登板の合計計算を解説する
次回予告
次回のテーマは「投球回の合計を正しく計算する」です。今回作った変換ロジックをSUMPRODUCT関数と組み合わせ、複数試合の投球回を選手ごとに正しく合算する方法を解説します。
▶︎ 次回:【第59回】投球回の合計を正しく計算する



コメント