前回で打点・本塁打・盗塁の集計が完成し、第5章はこれで卒業です。今回からいよいよ第6章「打撃成績の関数を作る」がスタートします。
第6章の最初のテーマは打率の計算式です。打率そのものは「安打数 ÷ 打数」というシンプルな割り算ですが、そのまま作ると打数が0の選手のところで「#DIV/0!」というエラーが表示されてしまいます。今回は、このエラーをIFERROR関数でスマートに防ぐ方法を解説します。
打率の定義をおさらいする
打率とは、打席に立った中でどれだけヒットにできたかを表す指標です。
打率 = 安打数 ÷ 打数
打数(四球・死球・犠打・犠飛を除いた打席数)のうち、何本ヒットを打ったかを割り算で求めます。
スプレッドシートにそのまま書くと、次のようになります。
=安打数のセル/打数のセル
例えば、こんな選手がいたとします。安打7・打数19のTANAKAさんなら7÷19≒0.368、安打6・打数21のSUZUKIさんなら6÷21≒0.286。計算自体は、この通りとてもシンプルです。
問題:打数が0のときに「#DIV/0!」エラーが出る
ところが、年間(野手)シートには今シーズンまだ一度も出場していない選手の行も並びます。出場していない選手は打数が0になるため、「何かの数÷0」という成立しない計算になってしまうのです。
「Division by Zero(ゼロで割り算)」の略です。数学的にゼロで割ることは定義されていないため、スプレッドシートがエラーを返します。打数が0の選手がいる限り、このエラーは必ず発生します。
例えば、こんな管理表があったとしましょう。年間(野手)シートに、出場試合数が0の選手が複数まざっているケースです。
| 選手名 | 打数 | 安打 | 打率(IFERROR前) |
|---|---|---|---|
| TANAKA | 19 | 7 | 0.368… |
| SUZUKI | 21 | 6 | 0.286… |
| YAMAMOTO | 0 | 0 | #DIV/0! |
| YAMAOKA | 0 | 0 | #DIV/0! |
このように出場していない選手の行にエラーが並んでしまうと、シート全体がぐっと見づらくなります。これをIFERROR関数で解消していきましょう。
IFERROR関数でエラーを0に置き換える
IFERROR関数は、「エラーが出たら代わりにこの値を表示する」という関数です。いわば「エラーが起きたときの保険」のような存在だと考えてください。
=IFERROR(計算式, エラーのときに表示する値)
- 第1引数:まず試みる計算式(打率の割り算など)
- 第2引数:エラーになったときに代わりに表示する値(0や空白など)
エラーが出なければ計算結果をそのまま表示し、エラーが出たときだけ第2引数の値に切り替わる、というシンプルな仕組みです。
=IFERROR(安打数のセル/打数のセル, 0)
打数が0でなければ安打÷打数の結果を、打数が0でエラーになる場合は0を表示します。実際のシートで使うときは、安打数と打数が入っているセルをそれぞれ参照してください。例えば安打数がG2・打数がF2に入っているなら、次のように書きます。
=IFERROR(G2/F2, 0)
これで打数が0の選手には「0」が表示され、出場している選手には正しい打率が表示されるようになります。
| 選手名 | 打数 | 安打 | 打率(IFERROR後) |
|---|---|---|---|
| TANAKA | 19 | 7 | 0.368… |
| SUZUKI | 21 | 6 | 0.286… |
| YAMAMOTO | 0 | 0 | 0(エラーなし) |
| YAMAOKA | 0 | 0 | 0(エラーなし) |
打率を「.368」形式で表示する
このままだと「0.368421…」のような長い小数がそのまま表示されてしまいます。野球の慣習では、打率は小数点以下3桁(.368のような形)で表示するのが一般的です。セルの書式設定で見た目を整えていきましょう。
.000 と入力して「適用」をクリックする
セルの書式設定を変えても、セルの中身(値)そのものは変わりません。実際には「0.368421…」という数値のまま保持されていて、画面上「.368」と表示されているだけです。ですから、このセルを他のセルから参照して計算する場合も、常に正確な値が使われます。
打率「.000」と「0」の表示の違い
書式設定を .000 にすると、打数が0の選手(IFERRORで0を返している選手)は「.000」と表示されます。これは「まだ出場していないので.000」という意味であり、ランキングを作る際には規定打席でフィルタリングして除外します(この点は第51〜53回で扱います)。
| 選手名 | 打率(書式設定後) | 状況 |
|---|---|---|
| T.MIZUKO | .636 | 出場あり・好打率 |
| TANAKA | .368 | 出場あり・好打率 |
| YAMAMOTO | .000 | 未出場(エラーなし) |
| YAMAOKA | .000 | 未出場(エラーなし) |
エラー時に0ではなく空白を表示したいときは、=IFERROR(G2/F2, "") のように書きます("" は空白を意味します)。ただし空白のセルを他の計算式が参照すると、そこでまた別のエラーが起きる場合があります。慣れないうちはまず0にしておくのが無難です。
- 打率は 安打数 ÷ 打数 で計算する
- 打数が0の選手がいると #DIV/0! エラーが表示される
- IFERROR関数で「エラーなら0を表示」と設定して防ぐ。完成形は
=IFERROR(安打/打数, 0) - セルの書式設定を
.000にすると、打率が野球らしい 3桁表示(.368など)になる - 書式設定は見た目だけを変えるもので、セルの中の値は変わらない
次回予告
次回のテーマは「出塁率の定義と計算式を作る」です。四球・死球・犠飛も加味した出塁率の計算式を、定義からじっくり組み立てていきます。打率との違いも整理しながら進めていきましょう。
▶︎ 次回:【第48回】出塁率の定義と計算式を作る



コメント