【めざせExcelマスターへの道】エラーを知って見えてくること

Excel

こんにちは。ヒトツメです。
今日は、Excelの関数を使った際にエラーが返ってきたときの意味や、エラーが起きるときの原因となる操作について解説していきたいと思います。

スポンサーリンク

デバッグは3倍の力量が必要

Excelでは、関数でありえない処理がされた場合などには、「#」で始まるエラー値と呼ばれる値が返却されます。この時、Excelは単にエラーになったことだけではなく、どういう理由でエラーになったかということを返却してくれています。
一般に、エラーが起きることを「バグ」といいますが、このような「バグ」を取り除くことを、「デバッグ」といいます。デバッグは、プログラミングをする上では、通常のコーディング(コードを書くような、作成のための作業)の3倍の力量が必要だといわれています。
Excelの場合も同じで、関数に値を入れて、臨んだ結果を出すための作業よりも、エラーが起きたときにそれを除去する作業の方がずっと大変です。

なので、Excelが、エラーの理由を示してくれているときには、それが何を示しているかをきちんと理解する必要があります。バグを解決するためのヒントを出してくれているときに、その意味を知らずに考えるのとでは、作業効率に雲泥の差が生まれます。

エラー値

マイナーな、細かいエラー値も含めると、Excelでは少なくとも8個のエラー値が用意されています。ERROR.TYPE関数という関数で、エラー値ごとに番号が振られていますが、一覧にすると次のようになります。

エラ  ERROR.TYPE 関数の戻り値
#NULL!1
#DIV/0!2
#VALUE!3
#REF!4
#NAME?5
#NUM!6
#N/A7
#GETTING_DATA8

ただ、あまり使われないものも多いので、今日は一般的によく見る、「#DIV/0!」「#VALUE!」「#REF!」「#N/A」について解説していきたいと思います。

#DIV/0!:0で割った場合

一つ目は、「#DIV/0!」です。これは、数学的にやってはいけないとされる、「0で割る」という計算が行われている場合に表示されるものです。試しに「=1/0」と入れると、下のように、このエラー値が出てきます。

このエラーが出るのは、月の損益率や原価率、プロダクト別の売上比率などを示した表を作成した時に、まだ実績が出ていない場合が多いです。
なので、このようなエラーは、直すべきエラーというよりは、「そういうもの」として理解しておくべきことという感じかもしれません。

表記の中にエラーが出るのを避けたいということであれば、IFERROR関数を用いて、「=IFERROR([本来の入力値], “-“)」といった形で、「-」と表記されるようにすると良いと思います。

#VALUE:文字と数字を混同している

次に、「#VALUE」というエラー値ですが、これは、本来数字に関する処理が予定されているとこrに、文字が混入している場合に出るものです。
試しに、「=1+2+”a”」と入れると、次のように、エラー値が出てきます。

このエラーがでるのは、数字が入力されているものの、入力形式が文字になっているというケースが大半です。このエラーが出るのは、SUM関数やAVERAGE関数など、数値を処理することが想定された関数の場合ですが、参照元のセルの入力形式が文字列になっていないかを確認すると解消することが多いです。

#REF!:参照先が間違っている

三つめは、「#REF!」というエラー値です。これは、Reference、つまり「参照」の略で、参照方法に間違いがある場合です。
試しに、OFFSET関数を用いて、「=OFFSET(A1,-1,-1)」とエクセルの表の外を参照しようとすると、次のようにこのエラー値が返ってきます。

通常は、このエラー値は、意図的に表の外を指定した時でなければ、出ることはありません。このエラーは、参照元のセルを削除してしまい、参照先が自動で「#REF!」に変更されてしまった場合がほとんどです。この場合は、直近のセルの削除の処理などの直前まで元に戻したり、いったん作業中のExcelを別名保存して前のバージョンを確認したり、という方法によって修正するよりほかありません。

#N/A:答えが見つからない

最後に、「#N/A」ですが、これは、答えが見つからないときに返ってくるエラー値です。色々といわれていますが、「Not Available」や「Not Applicable」、「No Answer」の略といわれており、要するに適用外、答えが見つからないという場合に出てくるものです。
これはLOOKUP系の関数やMATCH関数を用いる場合で、完全一致で処理しようとしている場合に戻ってくるのが大半です。つまり、検索値が検索範囲に含まれていないということです。

予期せずこの値が返ってくる場合は、検索値が数値だけど検索範囲の表記が文字列になっている検索値か検索範囲に見えないスペースが入っている、といったことが考えられます。
入力形式をそろえたうえで、TRIM関数(不要な前後の空白を除去する)を用いて、データを整形することで、回避することが出来ます。

さいごに

このように、Excelは意外と親切にも、エラーの理由を返してくれています。
一つ一つのエラーの意味を把握することで、エラーの修正はびっくりするほど効率的に進められるようになります。
また、Excelは、エラーの値を返す時、その理由を返却するために少し重い処理をしているといわれています。エラーがあらかじめ予想される場合は、IFERROR関数などを用いて、可能な限り回避することで、処理を軽くすることもできます。

エラーというと、良くないことのように聞こえますが、正しく向き合うことでより効率的に作業を進められるようになるので、是非覚えておいていただきたいと思います。

コメント

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