IFNA関数:#N/Aエラー発生時にエラー値の代わりの値を返す
IFNA 関数は Excel で用意されている関数の一つで、指定の値が #N/A エラーとなった場合に、エラー値の代わりに指定した別の値を返します。同じような関数に IFERROR 関数がありますが、 IFERROR 関数はエラーの種類に関係なく別の値を返すのに対して IFNA 案数は #N/A エラーの場合だけに別の値を返します。ここでは Excel における IFNA 関数の使い方について解説します。
※ Excel の対応バージョン : 365 web 2021 2019 2016 2013
※ 公式サイトでの解説 : IFNA 関数
(2021 年 09 月 13 日公開 / 2022 年 02 月 28 日更新)
IFNA関数の定義
IFNA 関数は引数に指定した値が #N/A エラーになった場合に、エラー値の代わりに指定した別の値を返します。
1 番目の引数にエラーかどうかを調べる値または値が入力されているセルを指定します。値が #N/A エラーでなかった場合は値をそのまま返しますが、もしエラーだった場合は 2 番目の引数に指定した値を代わりに返します。なお IFERROR 関数と異なり #N/A エラーだけが対象となります。他のエラーが発生した場合はそのままエラーを返します。
※ IFERROR 関数については「IFERROR関数:エラー発生時にエラー値の代わりの値を返す」を参照されてください。
例えば VLOOKUP 関数や HLOOKUP 関数を実行した場合、引数に指定した値が検索対象の範囲に見つからなかった場合に #N/A エラーが返されます。
=VLOOKUP(B11,B3:D7,2,FALSE) --> #N/A
#N/A が発生した場合に、 #N/A の代わりに別の値を表示するようにするには IFNA 関数を使って次のように記述します。
=IFNA(VLOOKUP(B11,B3:D7,2,FALSE),"Not Found") --> Not Found
このように #N/A エラーが発生する可能性がある場合に IFNA 関数を使用することで、エラー値を表示する代わりに指定した任意の文字列を表示させることができます。
※ VLOOKUP 関数については「VLOOKUP関数:指定の列を縦方向に検索し同じ行にある値を取得する」を参照されてください。
IFNA関数の使い方
それでは実際に IFNA 関数を使ってみます。 Excel のシートに対象の数値を次のように入力しました。
#N/A エラーが発生する状況を試してみるために C11 セルに VLOOK 関数を次のように入力しました。
=VLOOKUP(B11,B3:C7,2,FALSE)
詳しい説明はここでは省略しますが、 B11 セルに入力された値が B3 から B7 までのセルに入力された値に一致するか検索し、見つかった場合は同じ行の商品名を返します。例えば B11 セルに A-03 と入力すると VLOOKUP 関数が入力された C11 には "筆箱" が表示されます。
もし B11 セルに入力された値が B3 から B7 までのセルに入力された値と一致しなかった場合は VLOOKUP 関数が入力された C11 には #N/A が表示されます。
IFNA関数を使う
このように関数が返す値として #N/A となる可能性がある場合に、 #N/A の代わりに別の値を表示させたい場合は、 IFNA 関数の最初の引数に #N/A を返す可能性のある関数を指定し、 2 番目の引数に #N/A の代わりに返す文字列を指定します。
では C11 セルに次のように入力しました。
=IFNA(VLOOKUP(B11,B3:C7,2,FALSE),"Not Found")
先ほど同じように B11 セルに入力された値が B3 から B7 までのセルに入力された値に一致するか検索し、見つかった場合は同じ行の商品名を VLOOKUP 関数は返します。 IFNA 関数では 1 番目の引数に指定した関数が #N/A 以外を返した場合はその値をそのまま返すので C11 セルには VLOOKUP 関数が返した値がそのまま表示されます。例えば B11 セルに A-01 と入力すると VLOOKUP 関数が入力された C11 には "鉛筆" が表示されます。
もし B11 セルに入力された値が B3 から B7 までのセルに入力された値と一致しなかった場合は VLOOKUP 関数は #N/A を返します。 IFNA 関数では 1 番目の引数に指定した関数が #N/A を返した場合は、代わりに 2 番目の引数に指定した文字列を返すので C11 セルには "Not Found" が表示されます。
このように IFNA 関数を使用することで、 #N/A がセルに入力される可能性がある場合に別の値を代わりに表示させることができます。
関数の挿入を使ってIFNA関数を入力する
IFNA 関数を入力する場合に関数の挿入を使って行う方法を試してみます。関数を挿入するセルをクリックして選択したあとで、関数の挿入をクリックします。
「関数の挿入」ダイアログが表示されたら関数名のところで「IFNA」をクリックしてください。そのあとで「OK」をクリックしてください。
「関数の引数」ダイアログが表示されたら、 1 番目の引き数にエラーかどうかを判定する値や数式を入力します。 1 番目の引数を入力するテキストボックスをクリックして選択してから今回は直接 VLOOKUP(B11,B3:C7,2,FALSE) と入力しました。
続いて 2 番目の引数を入力するテキストボックスに 1 番目の引数が #N/A エラーになった場合に返す値を入力します。 2 番目の引数を入力するテキストボックスをクリックして選択してから今回は直接 "見つかりません" と入力しました。
最後に「OK」をクリックしてください。最初に選択したセルに IFNA 関数が入力されます。
現在は B11 セルに何も入力されていないので VLOOKUP 関数は #N/A を返すため、結果として IFNA 関数は "見つかりません" を表示しています。
B11 セルに "A-02" と入力すると VLOOKUP 関数は "消しゴム" を返すので IFNA 関数もそのまま "消しゴム" を返します。
B11 セルに B3:B7 の範囲に存在しない "B-03" のような値を入力すると VLOOKUP 関数は #N/A を返しので、結果として IFNA 関数は "見つかりません" を表示しています。
-- --
Excel における IFNA 関数の使い方について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。