エラーの回避策

数式のエラー判定を行なって、問題なければ数式の本体部分を実行します。
計算式でのエラー表示は醜い(みにくい)ものです。 計算結果の値が表示されるべきところに#DIV/0!」「#N/Aなどとエラー表示されてしまいます。
これらは明確な計算式の間違いというわけではなく例外データによるものですが、その例外データの発生は通常は予測できるものなので、 単にエラー表示だけを隠してしまう方法もありますが、ここではエラー判定を行なう方法を紹介します。
明らかにエラーになるケースが解っている場合は、その評価を行ないます。

「ゼロ除算」(#DIV/0!)の例です。

商とあまりの計算
(画像をクリックすると、このサンプルがダウンロードできます)
2行目(C2セル)はエラー判断なしです。

 =TRUNC($A2/$B2)
C2セルはこのような式で、「TRUNC関数」で商の小数部を切り捨てにしています。



関数概略説明
 TRUNC関数  数値の小数部を切り捨てて、整数または指定した桁数に変換します。引数は以下の通りです。
 ① 元の数値
 ② 切り捨て後の桁数(省略可、整数部のみにする場合は0または省略する)





この場合、B列(割る数)がゼロだと「ゼロ除算」のエラーとなり、#DIV/0!が表示されます。

ゼロ除算が発生!

※ここではエラーが赤太字で表示されていますが、これは「条件付き書式」でエラー時の書式を登録してあるからです。

3行目(C3セル)は分母がゼロかどうかを判断してから除算する方法です。

商とあまりの計算(分母ゼロ判定)

式はこのようになっています。

 =IF($B3<>0,TRUNC($A3/$B3),0)
ケースによりますが、ここでは分母がゼロの場合はエラーを出さずに、計算結果もゼロになるようにしています。
例えば企業の営業成績の帳票では、部門や分類別に「利益率」「構成比」等を表示させることがありますが、ある部門や分類で分母となる売上高がゼロだったら「ゼロ除算」のエラーは起こりうるわけです。



関数概略説明
 IF関数  比較判断を行ない、肯定時と否定時に分けます。引数は以下の通りです。
 ① 比較判断式
 ② 肯定時の値(または処置式)
 ③ 否定時の値(または処置式)

「エラー判定を行なって問題なければ本体部分を実行する」の方法は以下の通りです。
前のサンプルは「ゼロ除算」という例外に対応していますが、それ以外のエラーがあった場合はそのまま表示されてしまいます。 単にエラーを隠せば良いのではありませんが、実際に「エラーが発生するか」を判定する方法がこちらです。

商とあまりの計算(ゼロ割り②)

これは、割り算の数式の上にエラー評価関数をかぶせた形の方法です。

 =IFERROR(TRUNC($A4/$B4),0)





関数概略説明
 IFERROR関数  数式がエラーと評価される場合に指定した値を返します。それ以外の場合は、数式の結果が返されます。
 引数は以下の通りです。
 ① エラーを検査する数式(または評価値)
 ② エラーの場合の値(または処置式)





IFERROR関数」はExcel2007世代で追加された関数です。
勤務先などでそれより古い「Excel97-2003ブック(*.xls)」が残っている場合は、

 =IF(ISERROR(TRUNC($A4/$B4)),0,TRUNC($A4/$B4))
このような数式を見かけるかも知れません。
IFERROR関数」と「ISERROR関数」、これは誤記ではなく異なる関数です。 1文字違いで全く動作が違うのでご注意下さい。



関数概略説明
 ISERROR関数  指定された値(数式)のエラー有無をチェックして、その結果によりTRUEまたはFALSEを返します。
 引数はエラーを検査する数式(または評価値)です。



この「ISERROR関数」や「ISERR関数」「ISNA関数」等は、 引数にある本体数式はエラー評価のためだけにあって、実行結果は返されません。ですから上位の「IF関数」の正常判断側で、 もう一度本体数式を実施しなければならないのです。
これに対して「IFERROR関数」はエラー評価で正常であれば、第1引数側の本体数式がそのまま実施されて結果が返されます。