#DIV/0!


エラーの原因

数値を0で割り算したときに表示されます。

数学のルールでは、0を任意の数で割った答えは0になりますが、任意の数字を0で割ることはできません。=0/5は0ですが、=5/0は0にならず計算不能となるのです。

データが何も入力されていない空のセルも、計算上では数値の0として扱われますので、任意の数値を空欄セルで割った場合も「#DIV/0!」が表示されます。下図の表では、2行目の「売上」を3行目の「人数」で割って「単価」を計算しています。セルB4に「=B2/B3」という数式を入力し、セル範囲C4:D4にコピーしました。ところが、セルD3の「人数」が空欄のため、セルD4の数式「=D2/D3」は「=6215/0」を計算することになり、0で割り算はできないという「#DIV/0!」エラーが表示されています。

対処方法

2つの対処方法が考えられます。

(A)数式がエラーになるかどうかを判定する

「=D2/D3」がエラーになるかどうかを判定し、エラーになる場合は計算をしないで空欄を表示します。「=D2/D3」がエラーにならないときは、「=D2/D3」を計算した結果を表示します。数式がエラーになるかどうかはISERROR関数で判定します。ISERROR関数は、引数に指定した数式がエラーになるときTRUEを返し、エラーにならないときFALSEを返します。

ISERROR関数による数式がエラーになるかどうかの判定は、「#DIV/0!」エラーに限らずすべてのエラー対策として有効です。次項で解説する「#N/A」や「#NAME?」などでも、同じ考え方でエラーの表示を回避することができます。

(B)除数が0かどうかを判定する

「=D2/D3」全体がエラーになるかどうかを判定するのではなく、エラーの原因である「セルD3が0かどうか」を判定します。ISERROR関数などを使う必要もなく、IF関数の条件分岐だけで対応が可能です。

関数を使うコツ

数式のエラーとは、ちょっと関係ありませんが、Excelの関数を普通に使えるようになるコツをお教えします。それは関数を組み合わせて使うことです。上で解説したように「エラーを表示しない」などでは、IF関数による場合分けが必須です。また、ケースによってはISERROR関数なども必要です。このように、Excelの関数は組み合わせて使うものなのです。

しかし、Excelのビギナーは関数を組み合わせて使うという発想が乏しいです。関数は、単独で使うものだと勘違いしている人も少なくありません。以前、niftyのExcel会議室で、次のような質問を受けました。

VLOOKUP関数は、検索値が空欄だとエラーになります。
検索値が空欄でもエラーにならない関数を教えてください。

検索値が空欄のときはエラーにならないVLOOKUP関数などありません。そんなときは、検索値が空欄かどうかをIF関数と組み合わせて判定するんです。

このような関数は単独で使うものという誤解を生じるのは、ビギナーに関数を教えるとき[関数の挿入]ダイアログボックスを使わせるのが原因です。

関数の入力には、[関数の挿入]ダイアログボックスを使うべし、と教えられたビギナーは、関数を組み合わせて使うという発想が育ちません。ビギナーに関数の使い方を教えるときは、最初から関数は手入力すると教えるべきです。そう言うと「それじゃ、関数のスペルを覚えなければならないのか」と反論されることもあります。その通りです。関数のスペルは覚えるものです。覚えてください。Excelには400個近いワークシート関数がありますが、どうせよく使う関数なんて10個か20個程度です。数値を合計する関数は何ですか?SUMですよね。平均は?AVERAGEですね。条件によって計算を分岐する関数は何でしたっけ?そう、IFです。ほら、もう3つ覚えたじゃないですか。20個くらいの関数なら、覚えられるはずです。というか、Excelを使えるようになりたいのなら、そうした苦労を避けてはいけません。Excelは、決して誰にでも、苦労しないで、簡単に扱えるソフトではありません。使いこなそうと思うのなら、それなりの努力は必要です。

「[関数の挿入]ダイアログボックスを使わないと、引数がわからないじゃないか。引数まで覚えろと言うのか」という意見も耳にします。何を言っているのでしょうね。目の前の画面をよく見てください。セルに関数を入力すると、自動的に引数がポップアップされます。

「検索値とか列番号とか言われても意味がわからないし」と思った方、安心してください。[関数の挿入]ダイアログボックスだって、表記は同じです。

それでも、[関数の挿入]ダイアログボックスに毒されているユーザーは、「いや、ダイアログボックスを使って関数を組み合わせることだって、できるでしょ」と主張します。それは「=IF(E2="","",VLOOKUP(E2,A2:B4,2))」という数式を作るとき、先にIF関数を入力する場合です。ダイアログボックスによる関数のネストは、外側からしかできません。すでに入力されている「VLOOKUP(E2,A2:B4,2)」にIF関数を組み合わせて「=IF(E2="","",VLOOKUP(E2,A2:B4,2))」を作ることは不可能です。そして、実際の作表では、そうした内側から外側に向かって関数を追加していくことが多いんです。まずVLOOKUP関数を入力してみたと。とりあえず上手くいったと。だけど、検索値が空欄だとエラーになるのが後になってわかったと。それじゃ、IF関数と組み合わせようと。そういう作り方が一般的です。これは、[関数の挿入]ダイアログボックスでは無理です。

関数は組み合わせて使うものです。

そのための発想やアイデアは、[関数の挿入]ダイアログボックスを使っている限り育ちません。