エクセルを使用していると目にする機会があるエラー。
エラーが出てしまうと参照している計算ができなくなったり、VBAが止まったりと
本来の機能を阻害する恐れがあります。
エラーには「#N/A」「#DIV/0!」「#VALUE」「#REF」・「#NAME」・「#NUM」・「#NULL」などがあり,
それぞれ原因が異なります。
今回はそれぞれのエラーについての原因と
対象法についてまとめていますので是非参考にしてみてください。
それでは見ていきましょう。
■#N/Aの原因と対処方
・発生する原因
こちらの原因としては、数式で参照の対象が見つからないことが考えられます。
関数ではVLOOKUP関数・HLOOKUP関数・LOOKUP関数・MATCH関数で
よく起きるエラーです。
下図の見本を見てみましょう。
VLOOKUP関数を使用しており、AさんからDさんを選択すると
その人の都道府県や年齢が表示される仕組みになっています。
このようにAさんを選択すると左のリストから「東京」と「25」を抜き出してくれます。
もちろんBさんを選択すると「名古屋」「14」を表示するようになってます。
しかし、ここで左の表にない「Eさん」を選択してみましょう。
するとこのようになります。
Eさんは左の表にない為、検索結果が表示されません。
従って「#N/A」のエラーになってしまう仕組みです。
・対策
VLOOKUP関数・HLOOKUP関数・LOOKUP関数・MATCH関数を使用する際は
検索対象に当てはまる文字・数値があるか確認してみてください。
入力規則を使用してもエラーを防ぐことができますね。
■#DIV/0の原因と対処方
・発生する原因
こちらの原因としては、空白または0で除算(割り算)していることが考えられます。
よくある現象として、セルを参照して除算する場合に参照セルが空白になっていると
「#DIV/O」のエラーになります。
下図の見本を見てみましょう。
=5/0と「0」で除算してみましょう。
結果はこのようになります。
エラーになりました。
今回は「0」でしたが「空白」でも同様のエラーになってしまいます。
・対策
こちらは除算を使用する際に空白または0で除算してないか確認するしかありません。
セルを参照して除算している場合は先ほどのエラー同様、
入力規則で空白・0を入力できないようにするのもありですね。
■#VALUE!の原因と対処方
・発生する原因
こちらのエラーはよく発生するエラーとなっています。
原因は様々なことが考えられます。
下図をご覧ください。
数値1と数値2を足した数値を合計に表示するシートがあったとします。
結果は15+30なので「45」になります。
では本題です。数値1を「A」に変えてみましょう。
結果はこのようになります。
エラーのなってしまいました。
「A」は文字なので足し算できずにエラーを表示します。
・対策
上記の見本のように数値の計算なのに文字が含まれている場合など
関数の機能をはみ出した数式を組んでいないか確認してみてください。
原因を追究できない場合は使用する関数の仕組みを理解できていない可能性があります。
知識を深めて、使用する関数でできること、引数の条件を確認する必要があります。
■#REF!の原因と対処方
・発生する原因
こちらもよく見るエラーですよね。
エラーの原因としては「数式が有効ではないセルを参照している」ことです。
行・列の削除を行った場合にその削除した範囲のセルを参照して計算しているセルは
エラーになってしまいます。
下図の見本を見てみましょう。
合計「F3」は数値「B3」と「D3」を足した数値です。
ここでB列を削除してみましょう。
「#REF!」というエラーになってしまいます。
数式にも注目してみてください。
本来は「=B3+D3」という数式だったのですが、B列が削除されたので
参照していた「B3」が「#REF!」となって「#REF!+C3」となります。
さらに別シートを参照している場合にも同様のことが言えます。
例えば「=シート1!A1+シート2!A1」という数式があったとします。
式の仕組みとしてシート1のA1とシート2のA1を足す数式です。
この状態でシート2を削除するとシート2のA1が存在しなくなるため
同様に「#REF!」というエラーになってしまいます。
・対策
対策に関しては行・列を削除してエラーが起きた場合には参照を見直して
再入力する必要があります。
エラーを生じさせたくない場合はシート・列・行を削除する前に
その削除する範囲を参照した数式はないか把握する必要があります。
さらに削除する範囲を参照したい場合は「INDIRECT関数」を使用してみてください。
INDIRECT関数はこちらから☟
【INDIRECT関数】行・列の挿入・削除でも参照がズレない?文字列でセルを参照する ► 独学エクセル塾 (dokugakuexcel.com)
INDIRECT関数を使用すれば参照している行・列が削除されても参照は変わりません。
■#NAME?の原因と対処方
・発生する原因
「#NAME?」のエラーが発生する理由として、数式名に入力ミスがあることが考えられます。
では下図の見本を見てみましょう。
AさんからKさんの平均点を求めるには上記のような式を用います。
数式は「=AVERAGE(I15:I25)」となってます。
結果はもちろん平均を算出してくれます。
ではAVERAGEのスペルを間違えたとしましょう。
AVERAGEをBVERAGEに変更した結果はこちらです。
「#NAME?」のエラーが発生しました。
このように関数の入力が間違えている場合に発生するエラーとなってます。
さらに掛け算でも「=A*A」など入力すると、文字はかけることができませんから
数式の形式から逸脱していることとなり、#NAME?のエラーが発生します。
・対策
「#NAME?」のエラーが発生した場合には数式を今一度見直してみてください。
スペルに間違いがないか、関数の入力形式はあっているか確認する必要があります。
自信がなければ、関数の挿入からガイドに沿って入力するといいでしょう。
■#NUM!の原因と対処方
・発生する原因
こちらのエラーの原因としては、数式または関数に無効な数値が含まれている場合に
発生します。さらに表示範囲を超えていても同様のエラーになってしまいます。
では下図の見本を見ていきましょう。
555を1000乗した数値を計算してみましょう。
結果はこのようになります。
「#NUM!」のエラーが表示されました。
・対策
エクセルには一定数以上の数値を計算することができません。
数値の最大値と最小値は以下の通りです。
最大値:9.99999999999999E+307
最小値:2.2251E-308
こちらの幅の中で管理するようにしないといけませんね。
■#NULL!の原因と対処方
・発生する原因
こちらのエラーは入力したセル範囲に「共通部分」がないことが考えられます。
こちらもよくあるミスで発生するエラーになっています。
では見本を元に説明していきます。
下図を見てみましょう。
離れた範囲の合計を求める場合は=SUM(範囲1,範囲2)となります。
ここで必要な知識として範囲と範囲に「,」を挟む必要があります。
この状態で結果を見てみましょう。
うまく合計を計算できています。
では「,」を「スペース」に置き換えて計算してみましょう。
すると結果はこのようになります。
「#NULL!」のエラーが発生しました。
関数を打ち込む際は正確に入力できているか確認しながら進めましょう。
・対策
複数の範囲を参照する際は「:」、複数のセルを参照する際は「,」を入力してください。
■エラーに対応する関数について
これまでエラーについてまとめましたが、エラーに対応できる関数も存在します。
今回は2つおススメの関数を紹介します。
・エラー時に対応するIFERROR関数
こちらはエラー時にどのような計算・表示をするかを選択・入力することができます。
IF関数から派生した関数ですね。
通常IF関数は「正の場合」と「偽の場合」の2パターンですがIFERROR関数は
「通常時」と「エラー時」のパターンを入力できます。
詳しいINDIRECT関数はこちらから☟
【IFERROR関数】エクセルでのエラー時の対応について~エラーに強いファイルを作る~ ► 独学エクセル塾 (dokugakuexcel.com)
・エラー値を無視して計算できるAGGREGATE関数
こちらの関数はSUMやMAX関数など計算できる関数は限られますが
エラーを無視して計算できます。
さらに空白も無視して計算できる優れものです。
詳しいAGGREGATE 関数はこちらから☟
【AGGREGATE関数】エクセルで空白やエラーを無視して合計・平均・最大値・最小値を求める。 ► 独学エクセル塾 (dokugakuexcel.com)
■まとめ
いかがだったでしょうか。
エラーはエクセルを使用する中でよくある問題です。
しかしエラーには様々な種類があることをわかっていただけたと思います。
これからはエラーの意味を理解して、エラーに合わせた対応をしてみてください。
それでは次回の記事でお会いしましょう。