「平均値を出したら、なぜか自分の感覚よりずっと低い数値になる…」
「未参加や定休日の『0』まで計算に含まれてしまっている!」
売上やテストの点数の平均を出すとき、一番やってはいけないミスが「0(ゼロ)」を含めて平均を計算してしまうことです。
Excelの AVERAGE 関数は、「空白セル」は賢く無視してくれますが、「0」が入力されていると『1件のデータ』としてカウントし、全体の平均を大きく引き下げてしまいます。
この記事では、0を除外して「実質的な平均値」だけを一発で計算する AVERAGEIF 関数の使い方と、実務で必須となるエラー回避の裏ワザを解説します。
💡 この記事でわかること
- なぜAVERAGE関数を使うと平均が下がるのか(空白と0の違い)
- 0を除外する「AVERAGEIF関数」の正しい書き方
- 【実務必須】#DIV/0! エラーを出さないプロの数式テクニック
【失敗談】「平均日商が低すぎる!」と店長から大激怒された
平均の出し方を間違えると、データの信用度がゼロになります。私の痛い失敗談を聞いてください。
定休日(売上0円)のセルも含めて範囲選択し、そのまま普通の『AVERAGE関数』を使って提出しました。すると店長から電話がかかってきて、『おい!うちの店がこんなに売上低いわけないだろ!定休日の0円を平均の分母に入れるバカがいるか!ボーナス査定下がったらどうする!』と大激怒されました。
Excelは未入力の『空白』は無視してくれますが、『0』という数字が入っていると律儀に分母に入れて平均を下げてしまうのです。
なぜ 0 を含めると平均値が狂うのか?
平均を出す際、Excelが「セルの中身」をどう判定しているかを知っておく必要があります。
| セルの状態 | AVERAGE関数の扱い | 結果への影響 |
|---|---|---|
| 空白(未入力) | 計算から完全に無視される | データが入っている件数だけで正しく平均される(正常) |
| 数値の「0」 | 「1件のデータ」として分母に数えられる | 全体の合計が0で割られる回数が増え、平均値が不当に下がる |
テストの点数で「欠席で受けていない人(空白)」と「受けて0点だった人(0)」は意味が全く違います。
実務では、この「0」を計算から除外して実質的な平均値を出さなければならないケースが多々あります。
【解決】AVERAGEIF関数で0を除外する手順
0を除外するには、普通の AVERAGE ではなく、条件を指定できる AVERAGEIF 関数を使います。
基本的な書き方
平均を出したいセルに、以下の数式を入力します。(※範囲が B2:B10 の場合)
=AVERAGEIF (B2:B10, "<>0")
B2:B10: 平均を出したいセルの範囲です。"<>0": 「0と等しくない(0以外)」という条件を表す記号です。必ず半角のダブルクォーテーション(")で囲んでください。
たったこれだけで、範囲内の「0」のセルを分母から除外して、正しい平均値を一瞬で弾き出してくれます。
【超重要】エラー「#DIV/0!」を防ぐプロの実務テクニック
AVERAGEIF 関数を使うと、一つだけ致命的な弱点があります。
それは、「範囲内のすべてのデータが0だった場合(またはすべて空白だった場合)、割る数がなくなって #DIV/0! という醜いエラーが表示されてしまう」ことです。
実務の資料でこのエラーが表示されたままになっていると、非常に素人っぽく見えます。
これを防ぐために、プロは必ず IFERROR 関数 をセットで使います。
エラーを出さず、スマートに空白や0にする数式
先ほどの数式を IFERROR で囲みます。
=IFERROR (AVERAGEIF (B2:B10, "<>0"), 0)
この数式の意味は、「もしAVERAGEIFの計算結果がエラーになったら、代わりに 0 を表示してね」という指示になります。
最後の 0 の部分を ""(ダブルクォーテーション2つ)にすれば、エラーの時はセルを「空白(何も表示しない)」にすることもできます。実務ではこの書き方が鉄則です。
まとめ:平均を出すときは「0」の扱いに注意!
0を除外する平均値計算のまとめです。
- 普通の
AVERAGEだと「0」が分母に含まれて平均が下がってしまう。 =AVERAGEIF (範囲, "<>0")を使えば、0を無視して計算できる。- すべて0だった時のエラーを防ぐため、必ず
IFERRORと組み合わせて使う。
「とりあえず平均だからAVERAGEでいいや」と油断していると、私のように怒られることになります。
集計の目的が「全体」なのか「稼働日のみ」なのかをしっかり確認し、この関数を使いこなしてくださいね!