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条件の集計をする方法もあわせて参考にしてください。






