IFNA関数の使い方としくみ|草野球成績管理表でVLOOKUP失敗時に「未登録」と表示する例で解説

関数の使い方

検索関数を使っていると、検索対象が見つからずに#N/Aエラーが表示されることがあります。今回は、この#N/Aエラーだけをピンポイントで処理できるIFNA関数について、使い方としくみを解説します。

IFNA関数とは

📝 IFNA関数の役割(一言でいうと)

ある式の結果が「#N/Aエラー」だったときだけ、代わりの値を返す関数です。似た働きをする関数にIFERRORがありますが、IFERRORがどんな種類のエラーにも反応するのに対し、IFNAは#N/Aエラーだけに反応する、という違いがあります。

基本の書式はこうです。

=IFNA(値, エラーの場合の値)

「値」の部分には、VLOOKUPなど#N/Aエラーを返す可能性がある式をそのまま指定します。

成績管理表での実例:VLOOKUP失敗時に「未登録」と表示する

大阪グーニーズの成績管理表には、選手名・背番号・守備位置をまとめた「選手マスタ」シートがあります。個人成績シートでは、A列に入力された選手名をもとに、VLOOKUPで背番号を参照しています。

選手名 背番号 守備位置
SUZUKI 7 中堅手
NAKATA 3 一塁手
YAMAMOTO 5 左翼手

個人成績シートのB2セルに、A2セルの選手名から背番号を取得する式を入れると、こうなります。

=VLOOKUP(A2, 選手マスタ!A:C, 2, FALSE)

ここで、助っ人参加などによりA2セルに選手マスタ未登録の選手名(例:TANAKA)が入力されると、この式は#N/Aエラーを返してしまいます。IFNAと組み合わせると、次のようにできます。

✅ 未登録選手を「未登録」と表示する式
=IFNA(VLOOKUP(A2, 選手マスタ!A:C, 2, FALSE), "未登録")

これで、選手マスタにいない選手名が入力された場合は、エラー表示の代わりに「未登録」という文字列がB2セルに表示されるようになります。式が2つのシートをどうたどっているのか、下の図で確認してみましょう。

IFNA関数の使い方:選手マスタにないTANAKAを検索して#N/Aになったとき、B2セルに「未登録」と表示する流れの図解 IFNA関数の使い方 検索結果が#N/Aエラーのときだけ、決めておいた値に置き換える fx =IFNA(VLOOKUP(A2, 選手マスタ!A:C, 2, FALSE), “未登録”) 個人成績シート 選手マスタ シート(抜粋) A B 1 選手名 背番号 2 TANAKA 未登録 3 SUZUKI 7 4 NAKATA 3 5 YAMAMOTO 5 選手名 背番号 SUZUKI 7 NAKATA 3 YAMAMOTO 5 ① A2の「TANAKA」を選手マスタの選手名列から探す ② 該当する行がない → VLOOKUPは #N/A を返す ③ IFNAが#N/Aを受け取り「未登録」に置き換える =IFNA(, エラーの場合の値) 1つ目に指定した式の結果が#N/Aエラーだったときだけ、2つ目の値に置き換えて返します。 #N/A以外のエラー(#REF! や #DIV/0! など)は置き換えず、そのまま表示されます。 例:=IFNA(VLOOKUP(A2, 選手マスタ!A:C, 2, FALSE), “未登録”) → 見つからないときだけ「未登録」と表示する 大阪グーニーズ データ解説
選手マスタに無いTANAKAを検索し、#N/Aの代わりに「未登録」を表示する流れ
STEP 1
元になるVLOOKUP式を先に用意する

IFNAをつけない状態で、正しく背番号が引けているかをまず確認しておきます。

STEP 2
VLOOKUP式全体をIFNAの1つ目の引数として囲む

式の先頭に「=IFNA(」を追加し、その後ろに元のVLOOKUP式をそのまま続けます。

STEP 3
カンマの後にエラー時の表示文字列を入力する

「”未登録”」のように、#N/Aだったときに表示したい文字列を入れて「)」で閉じ、Enterキーで確定します。

しくみを理解する:IFNAとIFERRORの違い

📝 IFNAはエラーの種類を選んで反応する

IFNAは、指定した式の計算結果を確認し、それが#N/Aエラーであるときだけ2つ目の引数の値に置き換えます。#N/A以外のエラー(#REF!、#DIV/0!、#VALUE!など)が発生した場合は、IFNAは何もせず、そのままエラーを表示させます。

一方でIFERRORは、エラーの種類を区別せず、どんなエラーでも一律に代替値へ置き換えます。この違いがあるため、IFNAを使うと「検索対象が単に見つからないだけ」なのか「式そのものに別の不具合がある」のかを見分けやすくなります。

同じエラーが起きたときに、2つの関数で表示結果がどう変わるのかを並べてみます。

IFNAとIFERRORの違い:IFNAは#N/Aだけを未登録に置き換え、IFERRORは全種類のエラーを置き換えることを比較した図解 IFNAとIFERRORの違い 同じエラーが起きても、置き換わるかどうかが変わります =IFNA(値, “未登録”) #N/A 未登録 #REF! #REF!(そのまま) #DIV/0! #DIV/0!(そのまま) #VALUE! #VALUE!(そのまま) 置き換わるのは #N/A のときだけ =IFERROR(値, “未登録”) #N/A 未登録 #REF! 未登録 #DIV/0! 未登録 #VALUE! 未登録 エラーの種類を問わず全部置き換わる 使い分けのポイント 「検索しても見つからない」だけを想定内として処理し、他の不具合は気づけるようにしたい → IFNA 原因の種類を問わず、とにかく表示を整えたい → IFERROR 大阪グーニーズ データ解説
同じエラーでも、IFNAは#N/Aのみ、IFERRORは全種類を置き換える

よくあるミス

⚠️ 原因1:IFERRORで代用してしまい、原因を見逃す

VLOOKUPの列指定を間違えていて#REF!が出ているようなケースでも、IFERRORを使っていると一律「未登録」と表示されてしまいます。選手マスタ側の不備なのか、式そのものの間違いなのかが分かりにくくなるため、原因を切り分けたい場面ではIFNAのほうが有利です。

⚠️ 原因2:#N/A以外のエラーだと代替値が表示されない

IFNAは#N/A以外のエラーをそのまま素通りさせる仕様です。列番号のズレなど別の原因で#REF!が出ている場合、「未登録」は表示されずエラーのまま残ります。「IFNAを使ったのに未登録と表示されない」というときは、#N/A以外のエラーが起きていないか式を見直してみてください。

✅ この記事のまとめ
  • IFNA関数は「指定した式が#N/Aエラーのときだけ」代替値を返す関数
  • IFERRORとの違いは、エラーの種類を区別するかどうか(IFNAは#N/A限定、IFERRORは全種類)
  • VLOOKUPなどの検索関数と組み合わせ、「未登録」の表示専用として使うと原因の切り分けがしやすくなる

次回予告

次回のテーマは「ネスト(関数の入れ子)の考え方」です。関数を重ねるときの評価順序や可読性の注意点を、IF×IFERRORを組み合わせた打率表示式を例に解説していきます。

▶︎ 次回:関数のネスト(入れ子)の考え方としくみ

コメント

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