スプレッドシートのISNA関数の使い方|#N/Aエラー判定

スポンサーリンク

スプレッドシートでVLOOKUPを使っていると、検索値が見つからないときに#N/Aが表示されますよね。

#N/Aは「見つからなかった」という意味のエラーです。#VALUE!や#REF!とは性質が違うので、#N/Aだけを個別に検出したいケースは意外と多いものです。

「#N/Aかどうかだけをチェックしたい」。そんなときに使えるのがISNA関数です。

この記事では基本の書き方からIF関数との組み合わせ、IFNA関数やISERROR・ISERRとの違いまで紹介します。

ISNA関数とは?

ISNA関数(読み方: イズエヌエー関数)は、値が#N/Aエラーかどうかを判定する関数です。

名前はIS(〜かどうか)+ NA(Not Available の略)が由来です。

セルの値が#N/Aなら =ISNA(A1) はTRUEを返します。#N/A以外のエラーや正常な値に対してはFALSEです。

引数はチェックしたい値の1つだけです。結果はTRUEかFALSEの2択なので、とてもシンプルですね。

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

  • セルや数式の結果が#N/Aかどうかを判定する
  • IF関数と組み合わせて#N/A時の処理を分岐する
  • VLOOKUPの「見つからない」だけを検出する(他のエラーはスルー)
  • 条件付き書式で#N/Aセルだけを色付けする

NOTE

ISNA関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

ISNA関数の書き方(構文と引数)

基本構文

=ISNA(値)

カッコの中に#N/Aかどうかを判定したいセルや数式を指定するだけです。

引数の説明

引数必須/任意説明
必須#N/Aかどうかを確認したいセル参照・数式・値(例: A1、VLOOKUP(…))

引数は1つだけです。値が#N/AならTRUE、それ以外はFALSEを返します。

ISNA関数がTRUE/FALSEを返すパターン

どんな値がTRUE(#N/A)と判定されるかを一覧にしました。

データの種類ISNAISERRISERROR違い
#N/ATRUEFALSETRUEISNAとISERRORだけTRUE
#VALUE!FALSETRUETRUEISNAはFALSE
#REF!FALSETRUETRUEISNAはFALSE
#DIV/0!FALSETRUETRUEISNAはFALSE
#NUM!FALSETRUETRUEISNAはFALSE
#NAME?FALSETRUETRUEISNAはFALSE
#NULL!FALSETRUETRUEISNAはFALSE
数値(0を含む)FALSEFALSEFALSE同じ
文字列FALSEFALSEFALSE同じ
論理値(TRUE/FALSE)FALSEFALSEFALSE同じ
空白セルFALSEFALSEFALSE同じ

ISNA関数は#N/Aだけを検出します。他の6種類のエラーにはFALSEを返すのがポイントです。

TIP

全エラーを検出したい場合はISERROR関数、#N/A以外のエラーを検出したい場合はISERR関数を使います。用途に応じて使い分けてみてください。

ISNA関数の基本的な使い方

#N/Aかどうかを判定する

もっともシンプルな使い方です。A1が#N/Aかどうかを確認します。

=ISNA(A1)

A1が#N/AならTRUEを返します。#VALUE!や#REF!などの他のエラーや正常な値ならFALSEです。

IF関数と組み合わせて#N/A時の処理を変える

ISNA関数はIF関数と組み合わせることが多いです。#N/Aのときだけ処理を変えます。

=IF(ISNA(A2), "該当なし", A2)

A2が#N/Aなら「該当なし」と表示します。#N/A以外のエラーや正常な値ならそのまま表示します。

#N/Aを空白に置き換える

VLOOKUPの検索結果で「見つからなかった」ことを非表示にしたいときに使えます。

=IF(ISNA(B2), "", B2)

B2が#N/Aなら空欄にします。#VALUE!や#REF!はそのまま表示されるので、数式の不具合を見逃しません。

条件付き書式で#N/Aセルだけをハイライト

ISNA関数を条件付き書式に使うと、#N/Aのセルだけを色付けできます。

手順:

  1. 色付けしたい範囲(例: B2:B20)を選択する
  2. 「表示形式」→「条件付き書式」を開く
  3. 「カスタム数式」を選び、次の数式を入力する
=ISNA(B2)
  1. 書式スタイルで背景色を黄色やオレンジに設定する

#VALUE!や#REF!のセルはハイライトされません。「検索値が見つからない」セルだけが目立つので、マスタデータの追加漏れを発見できます。

実務でのISNA関数活用例

VLOOKUPで「見つからない」ときだけメッセージを出す

VLOOKUPの#N/Aは「検索値がマスタにない」という意味です。ISNA関数を使えば、#N/Aだけを検出してメッセージを表示できます。

=IF(ISNA(VLOOKUP(A2, Sheet2!A:C, 3, FALSE)), "マスタ未登録", VLOOKUP(A2, Sheet2!A:C, 3, FALSE))

#N/Aなら「マスタ未登録」と表示します。#VALUE!や#REF!はそのまま表示されるので、数式の不具合にも気づけます。

TIP

#N/Aだけを代替値に置き換えたい場合は、IFNA関数を使うともっとシンプルです。=IFNA(VLOOKUP(...), "マスタ未登録") で同じ結果になります。

MATCHの検索失敗を検出する

MATCH関数も検索値が見つからないと#N/Aを返します。ISNA関数でチェックしましょう。

=IF(ISNA(MATCH(A2, D:D, 0)), "リストになし", "あり")

A2の値がD列に存在するかどうかを判定します。見つからなければ「リストになし」、見つかれば「あり」と表示します。

ARRAYFORMULAで全行一括判定

ISNA関数をARRAYFORMULA関数と組み合わせると、1つの数式で全行分を処理できます。

=ARRAYFORMULA(IF(ISBLANK(A2:A), "", IF(ISNA(B2:B), "該当なし", B2:B)))

A列にデータがある行だけを対象に、B列の#N/Aをチェックします。#N/Aの行は「該当なし」と表示され、他のエラーはそのまま残ります。

NOT+ISNAで「#N/Aでない行」を抽出

FILTER関数と組み合わせて、#N/Aでない行だけを抽出するパターンです。

=FILTER(A2:C, NOT(ISNA(B2:B)))

B列が#N/Aでない行だけをフィルタして表示します。#VALUE!や#REF!の行も含まれるので、マッチしたデータと数式エラーの両方を確認できます。

ISERROR関数・ISERR関数との違い・使い分け

ISNA関数を理解するには、ISERROR関数とISERR関数との関係を押さえるのがポイントです。

3つの関数の判定範囲

3つの関数はエラーの判定範囲が異なります。

関数判定対象#N/Aの扱い
ISERROR全7種のエラーTRUE(エラー扱い)
ISERR#N/A以外の6種FALSE(正常扱い)
ISNA#N/AのみTRUE(エラー扱い)

この3つは次のような関係です。

ISERROR = ISERR + ISNA

つまりISERROR関数は、ISERR関数とISNA関数を合わせたものです。

どの関数を使うべきか

実務での使い分けは次のとおりです。

  • 全エラーを検出したいISERROR関数
  • #N/Aは正常扱い、それ以外のエラーだけ検出したいISERR関数
  • #N/Aだけを検出したい → ISNA関数
  • エラー時に代替値を返したいIFERROR関数
  • #N/A時だけ代替値を返したいIFNA関数

迷ったらISERROR関数から試してみてください。「#N/Aだけ個別に扱いたい」と感じたらISNA関数に切り替えましょう。

ISNA関数とIFNA関数の比較

ISNA関数とセットで覚えたいのがIFNA関数です。どちらも#N/Aの処理に使いますが、役割が異なります。

比較項目IF+ISNAIFNA
構文の長さ長い(数式を2回書く)短い(数式は1回)
可読性やや複雑シンプルで読みやすい
TRUE/FALSE判定できるできない
条件付き書式での利用使える向かない
処理速度数式が2回評価される数式は1回で済む

代替値を返すだけならIFNA関数がシンプルです。#N/AかどうかのTRUE/FALSE判定が必要ならISNA関数を使いましょう。

似たエラー判定関数まとめ

関数判定対象戻り値用途
ISERROR全7種のエラーTRUE/FALSE全エラーの判定
ISERR#N/A以外の6種TRUE/FALSE#N/Aを正常扱いしたい場合
ISNA#N/AのみTRUE/FALSEVLOOKUPの「見つからない」だけ判定
IFERROR全7種(判定+代替値)任意の値エラー時に別の値を返す
IFNA#N/Aのみ(判定+代替値)任意の値#N/A時だけ別の値を返す

ISNAと他のIS系関数

ISNA関数はIS系情報関数のひとつです。

関数判定内容
ISBLANK空白かどうか
ISNUMBER数値かどうか
ISTEXT文字列かどうか
ISLOGICAL論理値かどうか
ISERRORエラーかどうか(全種類)
ISERRエラーかどうか(#N/A除外)
ISNA#N/Aかどうか
ISFORMULA数式が入っているかどうか

データの種類に応じたチェックをしたいときは、IS系関数を使い分けてみてください。

よくあるエラーと対処法

ISNA関数自体がエラーを返すことはほとんどありません。ただし「思った結果にならない」ケースがあります。

症状原因対処法
#VALUE!なのにTRUEになるISNAではなくISERROR関数を使っている関数名を ISNA に修正する
#N/AなのにFALSEになる#N/Aではなく「#N/A」という文字列が入っているLEN関数でセル内容を確認する
エラーなのにFALSEになる#N/A以外のエラーが入っている(ISNAは#N/AだけTRUE)全エラーを検出したい場合はISERROR関数に変更
TRUEになるがエラーが見えない参照先の数式が#N/Aを返している数式バーでセルの中身を確認する
IFと組み合わせても空白にならないIF関数の引数の順番が逆=IF(ISNA(...), 代替値, 正常時の値) の順番を確認する

ISNAとISERRORの入力ミスに注意

ISNA関数を使いたいのにISERROR関数を入力してしまうと、#N/A以外のエラーまでTRUEになります。

  • =ISNA(A1) → #N/Aだけを判定
  • =ISERROR(A1) → 全エラーを判定

「#N/Aだけ検出したい」ときに間違えてISERROR関数を使うと、#VALUE!や#REF!もTRUEになってしまいます。関数名をよく確認してから入力しましょう。

まとめ

ISNA関数は、セルや数式の結果が#N/AかどうかをTRUE/FALSEで判定する関数です。

ポイントをおさらいしましょう。

  • 引数は1つ。#N/AならTRUE、それ以外はFALSE
  • #N/Aだけを検出する(他の6種類のエラーにはFALSEを返す)
  • VLOOKUPやMATCHの「見つからない」だけを検出したいときに便利
  • ISERRORは全エラー、ISERRは#N/A以外。ISNAは#N/Aだけ
  • 代替値を返すだけならIFNA関数のほうがシンプル

#N/Aだけを個別に判定したいときに、ぜひ活用してみてください。

関連記事

#N/Aだけを代替値に置き換えたいなら、IFNA関数の使い方のほうがシンプルです。

全エラーを判定したい場合は、ISERROR関数の使い方をあわせてどうぞ。

#N/A以外のエラーだけを判定したい場合は、ISERR関数の使い方を参考にしてください。

条件によって表示を切り替えたい場合は、IF関数の使い方も便利です。

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