第47回 打率の計算式:IFERRORで0除算エラーを防ぐ

関数・自動化

前回で打点・本塁打・盗塁の集計が完成し、第5章の内容をすべて学び終えました。今回からは第6章「打撃成績の関数を作る」に入ります。

最初のテーマは打率の計算式です。打率は「安打数 ÷ 打数」というシンプルな割り算ですが、打数が0の選手がいると「#DIV/0!」というエラーが表示されてしまいます。これをIFERROR関数でスマートに防ぐ方法を解説します。

打率の定義をおさらいする

打率は「打席に立ったうち、何割ヒットにできたか」を表す指標です。

✅ 打率の計算式

打率 = 安打数 ÷ 打数

打数(四球・死球・犠打・犠飛を除いた打席数)のうち、何本ヒットを打ったかを割り算で求めます。

スプレッドシートでそのまま書くと次のようになります。

=安打数のセル/打数のセル

たとえばTANAKAさんは安打7・打数19なので、7÷19≒0.368。SUZUKIさんは安打6・打数21なので、6÷21≒0.286です。計算自体はとてもシンプルです。

問題:打数が0のときに「#DIV/0!」エラーが出る

年間(野手)シートには、今シーズンまだ出場していない選手の行も並んでいます。出場していない選手は打数が0になるため、「何かの数÷0」という計算になってしまいます。

⚠️ #DIV/0! エラーとは

「Division by Zero(ゼロで割り算)」の略です。数学的にゼロで割ることは定義されていないため、スプレッドシートがエラーを返します。打数が0の選手がいる限り、このエラーは必ず発生します。

実際のデータで確認してみましょう。年間(野手)シートには出場試合数が0の選手が複数います。

選手名 打数 安打 打率(IFERROR前)
TANAKA1970.368…
SUZUKI2160.286…
YAMAMOTO00#DIV/0!
YAMAOKA00#DIV/0!

出場していない選手の行にエラーが並ぶと、シート全体が見づらくなります。これをIFERROR関数で解消します。

IFERROR関数でエラーを0に置き換える

IFERROR関数は「エラーが出たら、代わりにこの値を表示する」という関数です。一言でいうと「エラーが起きたときの保険」です。

📝 IFERROR関数の構造
=IFERROR(計算式, エラーのときに表示する値)
  • 第1引数:まず試みる計算式(打率の割り算など)
  • 第2引数:エラーになったときに代わりに表示する値(0や空白など)

エラーが出なければ計算結果をそのまま表示し、エラーが出たときだけ第2引数の値に切り替わります。

✅ 打率の関数(完成形)
=IFERROR(安打数のセル/打数のセル, 0)

打数が0でなければ安打÷打数の結果を、打数が0(エラー)なら0を表示します。シートで実際に使う場合、安打数と打数が入ったセルを参照します。たとえば安打数がG2・打数がF2に入っているなら次のように書きます。

=IFERROR(G2/F2, 0)

これで打数が0の選手は「0」と表示され、出場している選手は正しい打率が表示されます。

選手名 打数 安打 打率(IFERROR後)
TANAKA1970.368…
SUZUKI2160.286…
YAMAMOTO000(エラーなし)
YAMAOKA000(エラーなし)

打率を「.368」形式で表示する

このままだと「0.368421…」という長い小数が表示されます。野球の慣習では打率は小数点以下3桁(.368)で表示するのが一般的です。セルの書式設定で見た目を整えましょう。

STEP 1 打率のセル(またはその列全体)を選択する
STEP 2 メニューの「表示形式」→「数字」→「カスタム数値形式」を選ぶ
STEP 3 入力欄に .000 と入力して「適用」をクリックする
STEP 4 「0.368421…」が「.368」と表示されることを確認する
📝 書式設定は「見た目」だけを変える

セルの書式設定を変えても、セルの中身(値)は変わりません。「0.368421…」という数値のまま保持されており、見た目上「.368」と表示されているだけです。そのため他のセルからこのセルを参照して計算する場合も、正確な値で計算されます。

打率「.000」と「0」の表示の違い

書式設定を .000 にした場合、打数が0の選手(IFERRORで0を返している)は「.000」と表示されます。「出場していないから.000」という意味で、ランキングからは規定打席でフィルタリングして除外します(第51〜53回)。

選手名 打率(書式設定後) 状況
T.MIZUKO.636出場あり・好打率
TANAKA.368出場あり・好打率
YAMAMOTO.000未出場(エラーなし)
YAMAOKA.000未出場(エラーなし)
⚠️ IFERRORの第2引数を空白にする場合

エラー時に0ではなく空白を表示したい場合は =IFERROR(G2/F2, "") と書きます("" は空白を意味します)。ただし空白のセルを他の計算式が参照するとエラーになる場合があるため、まずは0にしておくのが無難です。

✅ この記事のまとめ
  • 打率は 安打数 ÷ 打数 で計算する
  • 打数が0の選手がいると #DIV/0! エラーが表示される
  • IFERROR関数で「エラーなら0を表示」と設定して防ぐ。完成形は =IFERROR(安打/打数, 0)
  • セルの書式設定を .000 にすると、打率が野球らしい 3桁表示(.368など)になる
  • 書式設定は見た目だけを変えるもので、セルの中の値は変わらない

次回予告

次回は「出塁率の定義と計算式を作る」。四球・死球・犠飛を加味した出塁率の計算式を、定義から丁寧に組み立てます。打率との違いも整理しながら進めましょう。

▶︎ 次回:【第48回】出塁率の定義と計算式を作る

コメント

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