いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)IFNA関数で#N/Aエラーを別の値に変換する

 Googleスプレッドシートで、#N/Aエラーを置き換えるIFNAエラーの使い方についてです。

  • 「=IFNA(値, エラーの場合の値)」という式で、値が#N/Aエラーである場合に別の値を表示させることができます。

使用例

 代表的な使用例としてVLOOKUP関数と併用する例が挙げられます。
 次の画像では「=VLOOKUP(F3,B2:D8,2,FALSE)」という式で、F3セルの商品コードを商品リストから検索して商品名を表示しようとしています。しかしリストに該当する商品コードがないので、結果は#N/Aエラーとなっています。



 エラー表示では意味が分かりにくいので、次の画像ではIFNA関数を使って、#N/Aエラーの場合に「該当なし」という文字列を表示させるようにしています。

 G3セル

=IFNA(VLOOKUP(F3,B2:D8,2,FALSE),"該当なし")

 IFNA関数の第1引数としてVLOOKUP関数の式を指定し、第2引数には結果が#N/Aエラーになった場合の表示内容を指定しています。
 IFNA関数がなかった頃はIF関数で対処するしかなかったためVLOOKUP関数の内容を2回書かねばならず面倒でしたが、IFNA関数を利用することで簡潔にまとめられます。

構文

 構文は次のとおりです。
 引数は2つで共に必須とされているものの、実は省略してもエラーにはならず、その場合に第1引数が#N/Aエラーだと空白セルが返ります。

IFNA(値, #N/Aエラーの場合の値)

備考

IFERROR関数との違い

 似たような関数としてIFERROR関数があります。
 次の画像では「=IFNA(B3,"")」とか「=IFERROR(B3,"")」といった式でB列の値を評価していますが、IFNA関数は#N/Aエラーだけを変換するのに対し、IFERROR関数はすべてのエラーを変換しているのがわかります。

 どんなエラーでも変換できるIFERROR関数の方が便利に思えますが、むやみに使うと意図しないエラーが発生している場合でも気づかない恐れがあるので注意が必要です。
 たとえば最初に挙げた例でIFERROR関数を使って「=IFERROR(VLOOOOOOOOKUP(F3,B2:D8,2,FALSE),"該当なし")」と、第1引数で誤った関数名を使っている場合(#NAME?エラーが発生)でも結果は「該当なし」となります。関数の選択には注意が必要です。

XLOOKUP関数で検索値がみつからない場合

 上記ではVLOOKUP関数での使用例を紹介しましたが、その後継関数であるXLOOKUP関数では検索値がみつからない場合の表示を直接指定することができるので、IFNA関数を併用する必要がありません。

 G3セル

=XLOOKUP(F3,B3:B8,C3:C8,"該当なし")

 検索値がみつからない場合の戻り値を第4引数で指定でき、とても簡潔な式になります。