Excelを日常的に使っているほとんどの方が遭遇したご経験のあるエラー値。#DIV/0!や#VALUE、#N/A、#REF!。
これらのエラー値については、ユーザー側のニーズとして発生原因よりも「非表示にしたい」というニーズが高いようです。
この記事では、そのニーズに応えるとともに各エラー値の発生原因も紹介します。
#DIV/0!、#VALUE、#N/A、#REFなどのエラー値が発生した場合でも、セル上で非表示にする方法とエラーの意味を具体例で説明します。
Excelで数式を使った場合で、計算結果が正しく算出できないときに、Excelはエラーを返します。たとえば計算式自体が正しくない場合や、計算式で参照する先のセルに計算に必要なデータが見つからない場合などです。
上記のように、Excelのエラー値は「#(シャープ)」で始まるアルファベットと記号の組み合わせのため、エラー値からその意味を推測することは困難です。
数式エラーの可能性があるセルには、緑色のエラーインジケーターが表示されます。併せて、そのセル付近に「!」のアラート記号が表示された小さなアイコンも表示されます。(「エラーのトレース」といいます)
エラーのトレースにマウスのカーソルを合わせると、そのエラーの意味が表示されます。
さらに、エラーのトレースをクリックするとヘルプを表示したり、エラーを無視することができます。エラーを無視すると、緑色のエラーインジケーターやエラートレースは表示されなくなります。
#DIV/0!は「ディブ・ゼロ」と読みます。DIVはDivideの略で「割る」という意味です。
#DIV/0!のエラー値の意味は「0や空白セルで割り算をしている」です。
下記のイメージ図は、#DIV/0!のエラー値が発生している例ですが、数式は「=A2/B2」となっており、つまり「30割る0」の計算式になっているのです。
Excelの関数「IFERROR」はエラー値の代わりに表示する値を指定することができます。
#DIV/0!が発生している場合でも、「IFERROR」を使えば#DIV/0!を非表示にすることができます。
通常の計算式
=A2/B2
#DIV/0!を非表示にする計算式
=IFERROR(A2/B2,””)
#N/Aは「ノー・アサイン」と読みます。VLOOKUP関数でよく見かけるエラー値で、検索値となるセルが空白の場合などに発生します。
下記のイメージ図は、#N/Aのエラー値が発生している例ですが、VLOOKUPでセルA7を参照しているにも関わらず、セルA7は空白のため検索ができない状態になっているのです。
Excelの関数「IFERROR」はエラー値の代わりに表示する値を指定することができます。
#N/Aが発生している場合でも、「IFERROR」を使えば#N/Aを非表示にすることができます。
通常の計算式
=VLOOKUP(A7,D1:E50,2)
#N/Aを非表示にする計算式
=IFERROR(VLOOKUP(A7,D1:E50,2),””)
#NAME?は「ネーム」と読みます。関数の名前やカッコ内の記述(引数など)を間違えている場合に発生します。
下記のイメージ図は、#NAME?のエラー値が発生している例です。関数名やカッコ内の記述(引数)が間違えているのです。
#NAME?エラーを2例紹介します。関数の名前を間違えている例と、カッコ内の記述を間違えている例です。見やすいように対象のセルA5は関数を表示していますが、[Enterキー]を押下すると#NAME?が表示されます。
ここまでの説明で、エラー値を「IFERROR」関数を使って非表示にする方法を紹介しましたが、#NAME?に関しては関数名やカッコ内の記述誤りが原因のため、非表示にするのは現実的ではありません。
間違いの箇所を突き止め、訂正しましょう。
補足です。他のエラー値のように、#NAME?も「IFERROR」関数を使えば非表示にすることは可能です。ただし、前述の通り強制的に#NAME?を非表示にする必要性はなく、訂正するほうが現実的でしょう。
#NULL!は「ヌル」と読みます。主にSUM関数の範囲指定にスペースが混在している場合に発生します。
下記のイメージ図は、#NULL!のエラー値が発生している例ですが、セルA1:A4の合計にセルC1を加算するSUM関数のカッコ内に半角スペースを含めてしまっているのです。
#NULL!は通常のSUM関数にスペースを含めてしまった場合の他、SUM関数で論理積(AND)を求める場合において、共通箇所(重なる箇所)が存在しない場合にも発生します。
どちらかというと、#NULL!はこの論理積のパターンで発生するケースが多いのかもしれません。
論理積(AND)については後日、別記事で説明します。
「IFERROR」関数を使えば#NULL!も非表示にできますが、前章の#NAME?同様、そもそも数式内の記述誤りが原因のため、非表示にするのは現実的ではないでしょう。
間違いの箇所を突き止め、訂正しましょう。
#NUM!は「ナンバー」と読みます。主にExcelの最大値・最小値を超過した場合や、特定の関数で引数の設定が誤っている場合に発生します。
下記のイメージ図は、#NUM!のエラー値が発生している例ですが、セルA1:A4の範囲からLarge関数を使って上から5番目に大きい数値を抽出していますが、データの個数が4つしかありませんので整合性に欠けているのです。
この例はLarge関数を使った場合ですが、その他、Excelの最大値・最小値を超えた数値を扱った場合も#NUM!が発生します。
Excelの関数「IFERROR」はエラー値の代わりに表示する値を指定することができます。
#NUM!が発生している場合でも、「IFERROR」を使えば#NUM!を非表示にすることができます。
通常の計算式
=LARGE(A1,A4,5)
#NUM!を非表示にする計算式
=IFERROR(LARGE(A1:A4,5),””)
ただし、上記の例のように単に整合性が欠けていることが原因であれば、数式を訂正するほうが現実的です。どうしても部分的に#NUM!が発生してしまいメンテナンスが困難な場合にのみ、「IFERROR」を使って非表示にするようにしましょう。
#REF!は「リファレンス」と読みます。主に数式が参照しているセル(行・列含む)を削除した場合に発生します。
今回紹介しているエラー値の中でも#REF!の発生頻度は高いと思いますので、原因なども含めよくご存じかもしれませんね。
下記のイメージ図で、#REF!のエラー値が発生するまでの経緯を説明します。#REF!の場合、エラー値発生後の状態を見ても理屈が分からないためです。
下のイメージ図(①)では、A列の1行目から4行目にかけて、セルC1の値を参照し乗算するような数式が設定されています。そして、セルA5には上の4行分の計算結果を合計するSUM関数が設定されています。
今回は分かりやすいように、それぞれのセルの隣に実際に設定されている数式を赤字で表示しています。
「IFERROR」関数を使えば#REF!も非表示にできますが、予めセルが削除されることを予想して「IFERROR」を設定することはないでしょう。また、何らかの原因でセルが削除されたのであれば、元の参照先の状態復旧や壊れた数式の更新をするべきであり、#REF!を非表示にするのは現実的ではないでしょう。
#VALUE!は「バリュー」と読みます。Excelだけではなく多くのプログラミング言語でも使われており、「値」を意味する言葉です。(Excelで使えるプログラミング言語「VBA」でもVALUEは頻出します)
主に四則演算を使った計算範囲に文字列が混在している場合に発生します。
下記のイメージ図は、#VALUE!のエラー値が発生している例ですが、セルA2:A4の範囲に入力された値をSUM関数ではなく演算子(+)を使って合計値を計算しています(セルA5)。ただし、セルA3には文字列が混在しているため、計算ができない状態になっているのです。
一方、同じように文字列が混在していてもSUM関数の場合には、文字列をスキップしてその他の範囲の合計を計算してくれます。この場合、#VALUE!のエラー値は発生しません。
ただし、SUM関数を使った場合でも計算範囲の中に#VALUE!が含まれていれば、#VALUE!が発生します。
Excelの関数「IFERROR」はエラー値の代わりに表示する値を指定することができます。
#VALUE!が発生している場合でも、「IFERROR」を使えば#VALUE!を非表示にすることができます。
通常の計算式
=A1+A2+A3+A4
#VALUE!を非表示にする計算式
=IFERROR(A1+A2+A3+A4,””)
ただし、上記の例のように四則演算の計算範囲に文字列が混在していることが原因であれば、問題のある箇所を訂正するほうが現実的です。どうしても部分的に#VALUE!が発生してしまいメンテナンスが困難な場合にのみ、「IFERROR」を使って非表示にするようにしましょう。