IFNA関数の基本的な使い方|#N/Aエラーだけを別の表示に置き換える方法

VLOOKUPなどで検索したときに出る「#N/A」エラーを、「該当なし」のような分かりやすい表示に置き換えたいことがあります。結論から言うと、IFNA関数は=IFNA(値,#N/Aのときに返す値)の形で、#N/Aエラーのときだけ別の値に置き換えてくれる関数です。この記事では基本の使い方と、IFERRORとの違いを解説します。

目次

IFNA関数の基本構文

次のような商品マスタ(A2:B5)と、商品コードを入力して単価を調べる表(D2:E4)を例に見ていきます。

A(商品コード) B(単価) C D(調べたいコード) E(単価の表示)
2 A101 120 A102
3 A102 250 A109
4 A103 180 A104
5 A104 300

A列=商品コード、B列=単価、D列=調べたいコード、という対応を踏まえてE2に次の数式を入れ、E4までコピーします。

=IFNA(VLOOKUP(D2,$A$2:$B$5,2,FALSE),"該当なし")

E2はA102の単価「250」、E4はA104の単価「300」がそのまま表示されます。E3のA109はマスタに存在しないためVLOOKUPは#N/Aを返しますが、IFNAで包んでいるので「該当なし」と表示されます。サンプル表で検算しても、この結果と一致します。

IFNA関数とIFERROR関数の違い

似た関数にIFERRORがありますが、対象になるエラーの範囲が違います。

関数 置き換えるエラー 向いている場面
IFNA #N/Aだけ 「見つからない」以外のミスには気づきたいとき
IFERROR #N/A、#REF!、#VALUE!などすべて 完成した表の見た目を整えたいとき

たとえば、列番号を誤って3にした=IFNA(VLOOKUP(D2,$A$2:$B$5,3,FALSE),"該当なし")は、範囲(A〜Bの2列)を超えているため#REF!エラーになります。IFNAは#REF!を置き換えないので、エラーがそのまま表示され、数式のミスにすぐ気づけます。IFERRORで包んでいると、このミスも「該当なし」に隠れてしまいます。使い分けの詳しい考え方はVLOOKUPとIFERRORを組み合わせてエラー表示を防ぐ方法で解説しています。

IFNA関数のよくある注意点

  • #N/Aの原因そのものは直らない: IFNAは表示を置き換えるだけです。本当はマスタにあるはずのコードで「該当なし」が出る場合は、空白や全角・半角の違いが原因のことが多いため、#N/Aエラーが出る原因と対処法(VLOOKUP編)を参考に原因を確認しましょう。
  • VLOOKUP以外の検索関数にも使える: MATCH関数も見つからないと#N/Aを返します。=IFNA(MATCH(D3,$A$2:$A$5,0),"未登録")のように書くと、D3(A109)はA列にないので「未登録」が返ります。INDEXとの組み合わせはINDEXとMATCHを組み合わせて柔軟に検索する方法を参照してください。
  • XLOOKUPなら包まなくてよい: Microsoft 365やExcel 2021以降で使えるXLOOKUPは、見つからない場合の表示を引数で直接指定できます(XLOOKUPで複数条件に一致するデータを検索する方法)。
  • Excel 2013より前のバージョンでは使えない: IFNAはExcel 2013で追加された関数です。古いバージョンで開くと正しく計算されないため、共有先の環境に注意しましょう。

IFNA関数が登場する記事

IFNA関数の使い方まとめ

IFNA関数は=IFNA(値,#N/Aのときに返す値)で、検索で見つからなかったときの#N/Aだけを分かりやすい表示に置き換えます。#REF!などの他のエラーは隠さないため、数式のミスに気づきやすいのがIFERRORとの大きな違いです。検索した値を条件付きで集計したい場合は、サイトの人気記事エクセルのsumifs関数でOR条件の集計をする方法もあわせて参考にしてください。

目次