ITライター 立山秀利
セルの数式がエラーの場合、エラー値(#VALUE!、#DIV/0!など)そのものを表示させずに、「正しく入力してください」などのメッセージを表示したいケースがある。そのような機能を作成するには、ISERROR関数を使うと便利だ。
例えば図1のように、商品の売値(B2~B5セル)と原価(C2~C5セル)から、原価率をD2~D5セルにそれぞれ算出したいとする。原価率を求める数式は、D2セルなら「=C2/B2」だ。その場合、売値のセルにデータが未入力だと、エラーとなり、セルに「#DIV/0!」と表示されてしまう。
そのようにエラーが表示されることを防ぐには、IFERROR関数を用いるのが一般的だ。図1では、エラーの場合は「-」を表示するようIFERROR関数をD2~D5セルに用いていた例だ。例えばD5セルなら、「=IFERROR(C5/B5,"-")」と入力している。図1ではB5セルが未入力のため、D5セルには通常ならエラーが表示されるが、IFERROR関数によって「-」が表示されるようになった。
図1
(画像をクリックすると拡大表示します)
ここで、もしD2~D5セルがエラーの場合のみ、E2~E5セルに「データを正しく入力してください。」と表示したいとする。この機能も一見、IFERROR関数で作れそうだが不可能だ。例えばE2セルなら、下記の数式を入力すればよさそうに思える。
----------------------------------------------------
=IFERROR(C2/B2,"データを正しく入力してください。")
----------------------------------------------------
しかし、IFERROR関数はエラーでない場合は数式の結果を表示するので、エラーでない場合にデータが表示されてしまうのだ(図2)。
図2
(画像をクリックすると拡大表示します)
このような機能はISERROR関数とIF関数の組み合わせなら作成できる。ISERROR関数は数式がエラーかどうか判定する関数だ。引数に指定した数式がエラーならTRUE、エラーでなければFALSEを返す。
---------------------------------
ISERROR(数式)
---------------------------------
数式の結果によるエラー値は、以下の表に示す。
エラー値 理由
---------------------------------------------------------------
#DIV/0! 割り算の割る値が0、または空白のセルで割られている
#VALUE! 引数の種類が間違っている
#NAME? Excelでは存在・利用できない名前が使われている
#N/A データが存在しない
#REF! 無効なセルを参照している
#NUM! 不適切な数値を指定している
#NULL セル範囲に共通部分がない
---------------------------------------------------------------
例えば、A1セルを0で割る数式「A1/0」をISERROR関数の引数に指定したとする。0で割るのでエラーとなり、ISERROR関数はTRUEを返す(図3)。
図3
(画像をクリックすると拡大表示します)
このISERROR関数を使い、原価率の計算式がエラーかどうかを判定する。その判定式をIF関数の条件に指定し、条件が成立するなら(エラーなら)、「データを正しく入力してください。」と表示し、成立しなければ(エラーでなければ)、何も表示しないよう指定すれば、目的の機能を作成できる。例えばE2セルなら、以下の数式になる。
----------------------------------------------------------
=IF(ISERROR(C2/B2),"データを正しく入力してください。","")
----------------------------------------------------------
IF関数で条件が成立しない場合は何も表示しないよう、空の文字列「""」を指定する。これで、エラーの場合のみ、E2~E5セルに「データを正しく入力してください。」と表示されるようになった。
図4
(画像をクリックすると拡大表示します)
このようにISERROR関数を用い、IF関数を組み合わせれば、数式がエラーの場合のみ指定した値をセルに表示できるようになる。その結果、表のデータも見やすくなり、確認作業も効率的になるだろう。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)