第58回 投球回の小数表記(1.1・1.2)を数値に変換する

関数・自動化

第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.11回1/31.333…
1.21回2/31.666…
2.0(または2)2回ちょうど2.000…
2.12回1/32.333…
2.22回2/32.666…
📝 なぜ「.1=1/3」なのか

野球では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=2.3」と計算してみましょう。これは本来「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(小数部分)
✅ 1つのセルの投球回を変換する関数(完成形)
=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 で変換
📝 「×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.03.0003回
KANEKO(第1試合)1.11.333…1回1/3
SATO(第1試合)0.20.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回】投球回の合計を正しく計算する

コメント

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