スプレッドシートのIFNA関数の使い方|#N/Aエラー時の代替値を設定する方法

スポンサーリンク

スプレッドシートでVLOOKUPやMATCHを使ったら「#N/A」が表示された。こんな経験、ありませんか?

「#N/Aだけ消したいけど、数式ミスまで隠すのは怖い」。そんなときに活躍するのがスプレッドシートのIFNA関数です。

この記事では基本の書き方から実務パターンまで解説します。IFERROR関数との違いもしっかり紹介しますよ。

スプレッドシートのIFNA関数とは?#N/Aエラー専用の処理関数

IFNA関数(読み方: イフエヌエー関数)は、数式の結果が#N/Aエラーのときだけ代わりの値を返す関数です。

「IF」は「もし」、「N/A」は「Not Available(該当なし)」の略です。

たとえば「VLOOKUPで該当なしのときだけ代替値を表示したい」場面です。IFNA関数なら#N/Aだけを処理できます。

それ以外のエラーはそのまま残せますよ。

IFNA関数にできることをまとめると、次のとおりです。

  • VLOOKUP関数MATCH関数の#N/Aを空白やメッセージに置き換える
  • #N/A以外のエラー(#REF!や#VALUE!など)はそのまま残す
  • 数式ミスによるエラーを見逃さずに済む
  • 「検索値が見つからない」ことだけを想定内として処理できる

IFERRORとの最大の違い

IFERROR関数はすべてのエラーをまとめて処理します。一方、IFNA関数は#N/Aだけが対象です。「検索で見つからない」は想定内だけど、「参照先が消えた」「数式が壊れた」は検知したい。そんなときはIFNA関数のほうが安全ですよ。

IFNA関数の書き方(構文・引数)

基本構文

IFNA関数の構文はとてもシンプルです。

=IFNA(値, NA時の値)

引数は2つだけ。IFERROR関数とまったく同じ形なので覚えやすいですよね。

引数の説明

それぞれの引数の意味を表で整理しておきましょう。

引数必須/任意説明
必須#N/Aかどうかをチェックしたい数式やセル参照
NA時の値任意#N/Aだったときに返す値。文字列・数値・数式のいずれもOK

第2引数を省略するとどうなるでしょうか。Googleスプレッドシートでは空文字列(””)が返ります。

実務では表示したい値を明示するのがおすすめですよ。

TIP

文字列を返す場合はダブルクォーテーションで囲みます。数値を返す場合は囲みません。

最もシンプルな使用例

A2にVLOOKUPの結果が入っているとします。#N/Aのときに「該当なし」と表示してみましょう。

=IFNA(VLOOKUP(A2, D:E, 2, FALSE), "該当なし")
  • VLOOKUP(A2, D:E, 2, FALSE): A2の値をD列から検索
  • “該当なし”: #N/Aエラー時に表示するテキスト

検索値が見つかれば結果がそのまま返ります。見つからなければ「該当なし」と表示されます。

基本的な使い方3選

基本がわかったところで、仕事でよく使うパターンを見ていきましょう。

#N/Aを空白にする

一番よく使うパターンが、#N/Aを空白に置き換えるケースです。

=IFNA(VLOOKUP(A2, D:E, 2, FALSE), "")

検索値が見つからなかったセルが空白になります。印刷する資料や共有用のシートで重宝しますよ。

#N/Aのときにメッセージを表示する

空白ではなく、わかりやすいメッセージを表示することもできます。

=IFNA(VLOOKUP(A2, D:E, 2, FALSE), "該当なし")

#N/Aの代わりに「該当なし」と表示されます。データが見つからなかったことをひと目で伝えたいときに便利です。

#N/Aのときに数値を返す

数値を返すパターンも実務でよく使います。

=IFNA(VLOOKUP(A2, 単価表!A:B, 2, FALSE), 0)

#N/Aの代わりに0を返します。SUM関数やAVERAGE関数の集計でエラーが止まるのを防げますよ。

#VALUE!や#REF!はどうなる?

IFNA関数は#N/A以外のエラーには反応しません。たとえば参照先を削除して#REF!が発生した場合、そのまま#REF!が表示されます。数式ミスが隠れないので安心ですね。

実務で使える応用パターン

VLOOKUP+IFNAで未登録データを処理する

IFNA関数の最も定番の使い方が、VLOOKUP関数との組み合わせです。

商品コードで商品マスタを検索するケースを考えてみましょう。

=IFNA(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), "未登録")

商品コードが見つからなければ「未登録」と表示します。大量データの突合で必須のテクニックですよ。

IFERROR関数でも同じことはできます。ただしIFERRORだと列番号ミスの#REF!も隠れてしまいます。

IFNA関数なら#REF!はそのまま表示されます。不具合に気づけるのがメリットですよ。

INDEX/MATCH+IFNAで柔軟な検索をする

INDEX関数MATCH関数を組み合わせた検索でも活躍します。

=IFNA(INDEX(C:C, MATCH(E2, A:A, 0)), "該当なし")

「検索列より左側の値を取得する」パターンです。見つからないときだけ「該当なし」を返します。

VLOOKUPでは対応できない検索が必要な場面で使ってみてください。

IFNAのネストで複数テーブルを順番に検索する

第2引数に別のIFNA関数を入れると、複数テーブルを順番に検索できます。

=IFNA(VLOOKUP(A2, シート1!A:B, 2, FALSE), IFNA(VLOOKUP(A2, シート2!A:B, 2, FALSE), "どちらにもなし"))

まずシート1で検索します。#N/Aならシート2を検索します。どちらにもなければ「どちらにもなし」を表示する仕組みです。

ちょっと複雑に見えますが、やっていることはシンプルです。「最初のIFNAが失敗したら次のIFNAを試す」という流れですよ。

IF関数と組み合わせて空白セルを除外する

IF関数とIFNA関数を組み合わせると、入力前のセルを除外できます。

=IF(A2="", "", IFNA(VLOOKUP(A2, D:E, 2, FALSE), "該当なし"))

A2が空白ならそもそも検索しません。値が入っているときだけVLOOKUPを実行します。

入力途中のデータを扱うときに便利なパターンですよ。

IFNA関数とIFERROR関数の違い・使い分け

IFNA関数とIFERROR関数は構文が同じですが、動作が異なります。大きな違いは「処理するエラーの範囲」です。

項目IFNAIFERROR
対象エラー#N/Aのみ全7種のエラー
主な用途VLOOKUP等の「該当なし」だけ処理汎用的なエラー処理
バグ発見#N/A以外はそのまま表示されるエラーを隠す可能性あり
構文=IFNA(値, NA時の値)=IFERROR(値, エラー時の値)

具体的に、同じ数式にミスがあった場合の動作を比較してみましょう。

発生したエラーIFNA関数IFERROR関数
#N/A(検索値なし)代替値を表示代替値を表示
#REF!(参照先削除)#REF!をそのまま表示代替値を表示
#VALUE!(データ型不正)#VALUE!をそのまま表示代替値を表示
#NAME?(関数名ミス)#NAME?をそのまま表示代替値を表示

IFERRORだと#REF!や#NAME?も代替値に置き換わります。数式のスペルミスに気づけないリスクがありますよね。

どちらを使うべき?判断基準

使い分けの基準はシンプルです。

  • VLOOKUPやMATCHの「該当なし」だけ処理したい → IFNA関数がおすすめ
  • 割り算のゼロ除算など複数種のエラーをまとめて処理したいIFERROR関数が便利
  • 数式のバグを見逃したくない → IFNA関数が安全

迷ったらIFNA関数を選んでおくのが安全です。想定外のエラーはそのまま残せるので、デバッグしやすくなりますよ。

よくあるエラーと対処法

IFNA関数自体はシンプルですが、ハマるポイントがあります。

症状原因対処法
#N/A以外のエラーも処理したいIFNA関数は#N/Aのみ対象IFERROR関数に切り替える
#N/Aなのに代替値が表示されないIFNA関数の外で#N/Aが発生している#N/Aを返す数式をIFNAの第1引数に直接入れる
#NAME?エラーが出る関数名のスペルミス関数名は IFNA と正確に入力する
意図しない空白が表示される第2引数を省略している表示したい値(0や”該当なし”など)を明示する
#VALUE!がそのまま表示されるIFNA関数は#VALUE!に反応しない(正常動作)#VALUE!も処理したいならIFERROR関数を使う
#REF!がそのまま表示されるIFNA関数は#REF!に反応しない(正常動作)参照先のセルやシートが正しいか確認する

デバッグのコツ

トラブル発生時は、まずIFNA関数を外して中の数式だけをテストしましょう。#N/A以外のエラーが出ていないか確認できます。「エラーが消えない」と思ったら、実は#N/A以外のエラーだったというケースが多いですよ。

まとめ

スプレッドシートのIFNA関数について解説しました。ポイントを振り返りましょう。

  • IFNA関数の構文は =IFNA(値, NA時の値) の2つの引数
  • #N/Aエラーだけを処理し、他のエラーはそのまま表示する
  • VLOOKUP+IFNAの組み合わせが実務で最も頻出
  • INDEX/MATCH+IFNAで柔軟な検索にも対応
  • IFERRORとの違いは「対象エラーの範囲」
  • 数式のバグを見逃したくないならIFNA関数が安全

まずはVLOOKUP+IFNAから試してみてください。#N/Aだけをきれいに処理しつつ、数式の不具合も見逃しません。

この記事で紹介した関数・関連記事

タイトルとURLをコピーしました