#N/A


エラーの原因

関数や計算式に使用できる値がないときなどに表示されます。

下図は、セル範囲A1:A5の中でセルA1の順位をRANK関数で求めています。

ここで、順位を求める対象であるセルA1を空欄にすると、引数に使用できる値がなくなるため「#N/A」のエラーが表示されます。

また、下図はセルB1に入力した「鈴木」をセル範囲A1:A4で検索しています。セルC2には「=MATCH(B1,A1:A4)」という数式を入力しました。

ここでも、検索の対象となるセルB1を空欄にすると、セルC2の数式は「#N/A」エラーになります。

もうひとつ、よくある例をご紹介します。下図はセル範囲A2:B5のA列から、セルD2に入力した番号を調べてB列のデータをVLOOKUP関数で表引きしているところです。セルD3には「=VLOOKUP(D2,A2:B5,2)」という数式を入力しました。

ここで、検索の対象となるセルD2を空欄にするとVLOOKUP関数は「#N/A」エラーになります。

対処方法

使用する関数によって対象となる値は異なりますが、IF関数で対象となるセルが空欄かどうかを調べるのも有効です。「#N/A」エラーはいろいろな関数で発生しますが、ここではVLOOKUP関数を例にして解説します。下図は、IF関数でセルD2が空欄かどうかを判定し、セルD2が空欄だった場合はVLOOKUP関数を計算せずに空欄を返し、セルD2が空欄でなかったときだけVLOOKUP関数を計算しています。

上のように、検索値が空欄かどうかを判定するのは簡単です。しかし「#N/A」エラーは、別のケースでも発生します。

今度は、名前を検索値として番号を調べています。このように、文字列を検索値として指定する場合は、VLOOKUP関数の第4引数にFALSEを指定して完全一致で検索しなければなりません。こうした完全一致による検索では、指定した検索値が存在しないとき、やはりVLOOKUP関数は「#N/A」エラーとなります。

今度は、検索値が空欄かどうかを判定するだけでは済みません。こんなときは、次のように考えます。

もし、VLOOKUP関数がエラーになるなら
 空欄を表示する
そうでなかったら(VLOOKUP関数がエラーにならないのなら)
 VLOOKUP関数を計算する

条件による分岐はIF関数です。空欄を表示するところは、先と同じ「""」を指定すればいいですね。

IF(VLOOKUP関数がエラーになるなら,"",VLOOKUP関数を計算する)

任意の関数がエラーになるかどうかは、ISERROR関数で判定できます。ISERROR関数は、引数に指定した数式がエラーのときTRUEを返します。

IF(ISERROR(VLOOKUP関数),"",VLOOKUP関数)

この「VLOOKUP関数」のところに、先の「VLOOKUP(D2,A2:B5,2,FALSE)」を入れてあげます。

IF(ISERROR(VLOOKUP(D2,A2:B5,2,FALSE)),"",VLOOKUP(D2,A2:B5,2,FALSE))

なお、こうした

もし、○○がエラーになるなら
 エラー処理
そうでなかったら(○○がエラーにならないのなら)
 ○○を計算する

という処理は使う機会が多いので、Excel 2007ではこんなとき便利なIFERROR関数が追加されました。Excel 2007以降では、次のように書けます。