IFERROR関数で#VALUEエラーが発生する原因と対処法

ここでは、IFERROR関数で#VALUE!エラーになる原因と対処・回避方法を解説します。

 

エラー回避のために使うIFERROR関数ですが、実はエラーを起こすことがあります。

 

そこで今回は、IFERROR関数がなぜ#VALUEエラーになるのか、どうすれば対処・回避できるのかを詳しく説明します。

1.IFERROR関数が#VALUE!のエラーになる原因は?

早速、IFERROR関数が#VALUE!エラーとなる原因から確認しましょう。

 

エラーになる原因は「閉じた状態の他のブック(ファイル)を参照している」ためです。

 

「閉じた状態の他のブック(ファイル)を参照している」とは、「IFERROR関数の引数で他のエクセルファイルを参照している」こと、プラス「そのエクセルファイルが閉じている」状態のことを指します。

 

IFERROR関数は仕様として閉じているブックの値を参照することができないので、結果「値が分からないよ」と#Value!エラーを返すのです。

 

そもそもエクセル関数には「参照先のファイルを開いていないとエラーになる関数」がいくつかあり、代表的なものは以下の通りです。

  • SUMIF関数
  • SUMIFS関数
  • COUNTIF関数
  • COUNTIFS関数
  • DSUM関数
  • DCOUNTA関数
  • INDIRECT関数

つまりこれらの関数は実質「他のエクセルファイルを参照させる使い方はできない」と思ったほうがよさそうです。

2.IFERROR関数の#VALUE!エラーの回避方法は?

ではIFERROR関数で#VALUE!エラーを回避するためにはどうしたらよいのでしょうか?

 

IFERROR関数が「閉じた別のエクセルファイルを参照できない」こと自体は、どうしようもありません。

 

ですから別の関数を使う必要があるのですが、それが「IF関数とISERROR関数の組み合わせ」です。

 

ISERROR関数は、値がエラーであれば「TRUE」を、エラーでなければ「FALSE」を返す関数なので、IF関数と組み合わせれば「エラーの時には空白に、エラーではない時には指定の値を表示」させることができます。またこの組み合わせだと、「引数で他のエクセルファイルを参照していてもエラーにならない」のです。

 

では例をもとにIFERROR関数からIF関数とISERROR関数の組み合わせに変えてみましょう。

 

例えばIFERROR関数を使用した場合、「=IFERROR([Book1]Sheet1!$A$1,"")」

という数式があったとします。

 

IFERROR関数の構文は「=IFERROR(①値,②エラーの場合の値)」ですから、IFERROR関数の引数は、①値が「[Book1]Sheet1!$A$1」②エラーの場合の値が「""」ということです。

 

ではこれを踏まえて計算式を変えてみましょう。

 

(1)「=IF(ISERROR(」と入力

 

(2)IFERROR関数の引数「値([Book1]Sheet1!$A$1)」と「),」を入力

 

(3)IFERROR関数の引数「エラーの場合の値("")」と「,」を入力

 

(4)IFERROR関数の引数「値([Book1]Sheet1!$A$1)」を入れ、「)」を入力

※(1)~(4)の太字部分(「」内)を入力すること

 

これで例の場合計算式は、「=IF(ISERROR([Book1]Sheet1!$A$1),"",[Book1]Sheet1!$A$1)」となり、先ほどのIFERROR関数の数式と同じ意味になります。

つまり、エラーをチェックしたい内容「[Book1]Sheet1!$A$1」を①、エラーの場合に表示させたい内容「""」を②とした時、

IFERROR関数で「=IFERROR(①,②)」の場合には、

ISERROR関数では「=IF(ISERROR(①),②,①)」

とすると同じ意味になるということです。

 

これで他のエクセルフィルを参照しても#VALUE!エラーにならず、エラーを回避することができます。

3.IF関数+ISERROR関数との使い分け方

 ではIFERROR関数とIF関数とISERROR関数の組み合わせは、どのように使い分けたらよいのでしょうか?

 

IFERROR関数のメリットは「数式が分かりやすく短いこと」で、デメリットは「閉じている他のファイルが参照できないこと」です。

 

対してIF関数とISERROR関数のメリットは「閉じている他のファイルが参照できること」で、デメリットは「数式が分かりにくく長いこと」です。

 

つまりポイントは「閉じている他のエクセルファイルを参照するかどうか?」なので、「参照しない場合にはIFERROR関数を、参照する場合にはIF関数とISERROR関数を使う」ようにしましょう。

 

 

以上参考になれば幸いです。


口コミ・評判のいいExcel本の紹介】


Top