安打÷打数で求める打率は、成績管理表でもっとも見られる数字のひとつです。ここまで解説してきたSUM・IFERROR・COUNTを組み合わせると、シーズン序盤の未入力期間でもエラーを出さずに打率を自動計算し続ける式が作れます。今回は、その組み方としくみをまとめて解説します。
打率を求める数式とは
打率そのものの計算は「安打の合計÷打数の合計」という単純な割り算です。ただし、シーズン開幕直後など1試合もデータが入っていない期間は打数の合計が0になり、そのまま割り算すると#DIV/0!エラーが表示されてしまいます。そこで、エラー時に代わりの表示を返すIFERRORで全体を包み込む形が定番になります。
基本の書式はこうです。
=IFERROR(安打の合計/打数の合計,"-")
成績管理表での実例:通算打率を出す
大阪グーニーズの個人成績シートを例に考えます。各試合の記録が1行ずつ入っており、C列に打数、D列に安打が入っているとします。
| 試合日 | 対戦相手 | 打数 | 安打 |
|---|---|---|---|
| 4/6 | ○○ファイターズ | 4 | 2 |
| 4/13 | △△ベアーズ | 3 | 1 |
| 4/20 | □□イーグルス | 4 | 0 |
| … | … | … | … |
このC列(打数)とD列(安打)を使い、シーズン通算の打率を求める式はこうなります。
=IFERROR(SUM(D2:D30)/SUM(C2:C30),"-")
安打(D列)と打数(C列)をそれぞれSUMで合計してから割ることで、1試合ごとの平均ではなく、シーズン全体を通した正しい通算打率が求まります。試合が増えるたびにこの1つの式が自動で最新の打率を返し続けてくれます。
個人成績シートの打率欄など、通算打率を表示したいセルをクリックして選択します。
D2からD30までをマウスでドラッグすると、自動で「D2:D30」の部分が入力されます。
同じように、今度はC2からC30までドラッグして「C2:C30」を入力します。
式を確定すると、打率が表示されます。まだ打数が入力されていない場合は、エラーの代わりに「-」が表示されます。
しくみを理解する:3つの関数がそれぞれ何をしているか
この式は1つに見えて、実は3つの関数の考え方が組み合わさっています。
- SUM:安打列・打数列それぞれの数値だけを合算する(空白セルは自動的に無視される)
- 割り算(÷):安打の合計を打数の合計で割り、打率という1つの比率にする
- IFERROR:割り算の結果がエラーになった場合だけ、代わりの表示(“-“)に差し替える
エラーが発生する原因は、打数の合計がちょうど0になることです。これは「打数が入力されているセルの数」をCOUNTで数えたときに0件であることと同じ状態です。つまりCOUNT(打数の範囲)が0になるタイミングと、SUM(打数の範囲)÷0でエラーが起きるタイミングは常に一致します。IFERRORはこの「0件だったらエラーになる」という関係を、COUNTで事前に判定する代わりに、結果側からまとめて拾っている仕組みだと理解すると分かりやすくなります。
よくあるミス:打率がおかしな数字になる原因
D2:D30(安打)とC2:C30(打数)のように、2つの範囲は同じ行数・同じ試合分を指している必要があります。片方だけ範囲を広げ忘れたり、行を追加した際にどちらか一方の範囲だけ更新し忘れると、まったく違う試合同士を割り算してしまい、実態とかけ離れた打率が表示されます。
IFERRORの2つ目の引数(“-“の部分)を省略すると、エラー時にセルが空白扱いになり、他の集計式から参照したときに意図しない挙動をすることがあります。逆にここを0にしてしまうと、シーズン序盤でも「打率0.000」のように、実際には未出場なのにあたかも打率が確定しているかのような表示になってしまうため注意してください。
- 打率は「安打の合計÷打数の合計」というシンプルな式で求められる
- 1試合ずつの平均ではなく、SUM同士を割ることでシーズン全体を通した正しい通算打率になる
- IFERRORで0除算対策をすることで、打数がまだ0件のシーズン序盤でもエラーを表示せずに運用できる
次回予告
次回のテーマは「防御率計算の複合式」です。SUMPRODUCTと四則演算を組み合わせて、投球回の1.1・1.2表記を正しく扱いながら防御率を求める式を解説していきます。
▶︎ 次回:防御率計算の複合式の組み方としくみ



コメント