売上を訪問件数で割って1件あたりの単価を出そうとしたら#DIV/0!と表示された、という場面があります。結論から言うと、#DIV/0!エラーは「0または空白のセルで割り算をした」ことが原因です。この記事では、発生する典型的な状況、エラーを表示させない3つの書き方とその使い分け、平均を求める関数で起こるパターンまで解説します。
#DIV/0!エラーが起こる基本の原因
#DIV/0!(Division by zero=ゼロ除算、の意味)エラーは、割り算の除数(割る数)が0のときに発生します。算数と同じで、0で割った答えは定義できないためです。注意したいのは、空白のセルも0として扱われる点です。まだ数字が入力されていないだけのセルで割ると、同じくエラーになります。
具体例:訪問1件あたりの売上を求める
次のような担当者別のデータ(A1:C5)があるとします。A列が担当者、B列が売上、C列が訪問件数です。
| A(担当者) | B(売上) | C(訪問件数) | |
|---|---|---|---|
| 2 | 佐藤 | 120000 | 15 |
| 3 | 鈴木 | 85000 | 0 |
| 4 | 田中 | 96000 | 12 |
| 5 | 高橋 | 0 | 0 |
訪問1件あたりの売上を求めるため、B列(売上)をC列(訪問件数)で割る数式をD列に入れます。
=B2/C2
佐藤さんはB2(売上120,000円)÷C2(訪問15件)で8,000円、田中さんも96,000÷12で8,000円と正しく計算されます。しかし鈴木さんはC3(訪問件数)が0のため#DIV/0!になります。高橋さんも売上・訪問件数ともに0なので同じくエラーです。
データとして間違っているわけではなく、「まだ活動実績がない」という正常な状態を表しているだけなのに、表全体にエラーが並んで見栄えが悪くなる。これが#DIV/0!のよくある困り方です。
#DIV/0!エラーを表示させない3つの書き方
いずれもB列(売上)をC列(訪問件数)で割る前提の書き方です。
1. IF関数で除数が0かどうかを先に判定する
=IF(C2=0,"-",B2/C2)
C2(訪問件数)が0のときは「-」と表示し、そうでないときだけ割り算を実行する、という意味の数式です。もっとも安全な書き方で、割り算以外のエラーが起きた場合にはきちんとエラーが表示されるため、別の問題を見逃しません。
2. IFERROR関数でエラー全般を置き換える
=IFERROR(B2/C2,"-")
数式を短く書けるのが利点ですが、#DIV/0!以外のエラーも同じく「-」に置き換わります。たとえばB2に文字列が混ざって#VALUE!エラーの原因と直し方が起きていても「-」としか表示されず、原因に気付けません。手軽さと引き換えに、問題を隠してしまうリスクがあります。
3. 除数が空白かどうかも含めて判定する
=IF(N(C2)=0,"-",B2/C2)
C2が空白でも文字列でも0として判定できるため、入力途中のシートで表示を安定させたい場合に向いています。基本は1の書き方で十分で、これは補助的な選択肢です。
平均を求める関数でも#DIV/0!は起こる
割り算を自分で書いていなくても、内部で割り算をしている関数では同じエラーが起こります。代表がAVERAGE系です。範囲の中に数値が1つもない場合、AVERAGEは「合計÷0件」を計算しようとして#DIV/0!になります。
条件を付けて平均を求める場合はさらに起こりやすく、AVERAGEIFSで複数条件の平均を計算する方法で紹介しているAVERAGEIFSも、条件に合う行が1件もないと#DIV/0!を返します。担当者名を選ぶと平均が出る集計表などで、まだ実績のない担当者を選んだ瞬間にエラーになるのはこのパターンです。この場合もIF+COUNTIFSで件数を先に確認するか、IFERRORで整えます。
よくあるエラー・注意点
- 空白セルは0として扱われる: まだ入力していないだけのセルで割ってもエラーになります。表を作った直後に全行がエラーで埋まるのはこれが原因なので、最初からIFで包んでおくと快適です。
- 空欄(“”)にすると後の集計で扱いにくい: エラー回避で””(空文字)を返すと、そのセルは文字列扱いになります。その結果をさらに平均や合計に使うと集計から漏れたり、#REF!エラーとは別の型の問題を引き起こしたりします。あとで再集計する列なら、””ではなく0を返すか、IFERRORを使わず素直にエラーを残す判断も必要です。
- 提出資料では「-」が見やすい: 空欄だと入力漏れなのか該当なしなのか区別できません。「-」や「実績なし」と明示したほうが読み手に親切です。
- 0除算を隠すと分母の異常に気付けなくなる: 本来は訪問件数が入っているはずのセルが0になっているなら、それはデータ不備のサインです。エラーを消す前に、分母が0で正しいのかを一度確認しましょう。
まとめ
#DIV/0!エラーは除数が0または空白のときに起こり、データの不備ではなく「まだ実績がない」という正常な状態でも発生します。IF関数で除数を先に判定する書き方がもっとも安全で、IFERRORは手軽な反面ほかのエラーまで隠してしまう点に注意が必要です。AVERAGEIFSのように内部で割り算をする関数でも起こるので、条件に合う行が0件になりうる集計表では最初から対策しておきましょう。データの型が原因で計算できない#VALUE!エラーの原因と直し方や、検索値が見つからない#N/Aエラーが出る原因と対処法(VLOOKUP編)もあわせてご覧ください。





