- 作成日 : 2025年8月25日
NA関数の使い方:意図的にエラー値を生成してデータ処理を制御する方法
NA関数は、#N/Aエラー値を返すエクセルの情報関数です。一見すると単純な機能ですが、グラフ作成時の空白データの処理、VLOOKUP関数との組み合わせ、条件付きエラー表示など、データ分析やレポート作成において使われます。
意図的にエラーを生成することで、データの欠損を明示したり、計算の流れを制御したりできます。本記事では、NA関数の基本的な使い方から実践的な活用法まで、具体例を交えて解説します。
目次
NA関数の基本的な使い方
NA関数とは
NA関数は「Not Available(利用不可)」を意味する#N/Aエラーを返す関数です。このエラーは「該当なし」や「データなし」を表現する際に使用され、他のエラー(#DIV/0!や#VALUE!など)とは異なる特別な意味を持ちます。
データ分析において、空白セルや0(ゼロ)とは異なる「データが存在しない」状態を明示的に示すことができ、後続の処理やグラフ表示で他の値と区別されて扱われます。特にグラフでは、#N/A のデータ点は描画されず線が途切れるため、欠損箇所に意図的なギャップを作れます。空白セルは[非表示および空白セルの設定]で「線で結ぶ」を選べば補間できますが、#N/A は補間されません。
基本構文
NA関数の構文は非常にシンプルです。
=NA( )
引数は不要で、常に#N/Aエラー値を返します。このシンプルさにより、条件付き処理にも適しています。
基本的な使用例
単純な使用例:
=NA( )
結果:#N/A
条件付きでの使用:
=IF(A1=””, NA(), A1*2)
A1が空白の場合は#N/A、それ以外は2倍の値を返します。
データ検証での使用:
=IF(売上<0, NA(), 売上)
負の売上(異常値)を#N/Aとして処理します。
NA関数の利用シーン
グラフ作成での活用
NA関数の最も一般的な用途は、グラフ作成時のデータ処理です。空白セルや0値とは異なり、#N/A値はグラフ上で特別に扱われます。
折れ線グラフでのギャップ表示(欠損の明示)
月次売上データで一部の月のデータが欠損している場合:
売上データの処理:
=IF(ISBLANK(B2), NA(), B2)
この処理により、欠損している月のデータ点は描画されず線は途切れます(ギャップ表示)。0 を入れると線が 0 まで落ちますが、#N/A なら欠損箇所に意図的なギャップを作れます。前後の値を線で結びたい場合は、セルを空白にしたうえで[非表示および空白セルの設定]で「線で結ぶ」を選択してください(#N/A は補間されません)。
条件付きグラフ表示
特定の条件を満たさないデータをグラフから除外:
閾値以上のみ表示:
=IF(売上>=目標値, 売上, NA())
期間限定表示::
=IF(AND(日付>=開始日, 日付<=終了日), 値, NA())
データ検証とクリーニング
データの完全性をチェックし、問題のあるデータを識別する際に使用します。
必須項目のチェック
すべての必須項目が入力されているか確認:
=IF(OR(ISBLANK(氏名), ISBLANK(メール), ISBLANK(電話)), NA(), “完了”)
数値の妥当性チェック:
=IF(OR(年齢<0, 年齢>150), NA(), 年齢)
データ型の検証
日付データの検証:
=IF(ISNUMBER(日付セル), 日付セル, NA())
数値データの検証:
=IF(ISNUMBER(VALUE(データ)), データ, NA())
NA関数の応用・他関数との組み合わせ
VLOOKUP関数との組み合わせ
検索結果が見つからない場合のエラー処理で、NA関数が活用されます。
エラーの明示的な処理
基本的なVLOOKUP:
=VLOOKUP(検索値, 範囲, 列番号, FALSE)
エラー時にメッセージ表示:
=IFERROR(VLOOKUP(検索値, 範囲, 列番号, FALSE), “データなし”)
意図的にNA()を返す:
=IF(COUNTIF(検索範囲, 検索値)=0, NA(), VLOOKUP(検索値, 範囲, 列番号, FALSE))
複数の検索結果の統合
複数テーブルからの検索:
=IFERROR(VLOOKUP(ID, テーブル1, 2, FALSE),
IFERROR(VLOOKUP(ID, テーブル2, 2, FALSE), NA()))
集計関数での挙動
NA関数が返す#N/A値は、各集計関数で異なる扱いを受けます。
各関数での#N/Aの扱い
SUM関数:#N/A を含むと結果は #N/A になります。エラーを無視して合計したい場合は、
=AGGREGATE(9, 6, 範囲) // 9:SUM, 6:エラー値を無視
AVERAGE関数:#N/A を含むと結果はエラーになります。
エラーを無視して平均する例:
=AGGREGATE(1, 6, 範囲) // 1:AVERAGE, 6:エラー値を無視
COUNT関数:#N/Aをカウントしない
=COUNT(A1:A10) // 数値のみカウント
MAX/MIN関数:#N/A を含むと結果はエラーになります。
エラーを無視して求める例:
=AGGREGATE(4, 6, 範囲) // 4:MAX
=AGGREGATE(5, 6, 範囲) // 5:MIN
AGGREGATE関数での活用
エラーを無視した集計:
=AGGREGATE(1, 6, 範囲) // 1:AVERAGE, 6:エラー値を無視
条件付き書式との連携
#N/A値を視覚的に識別しやすくする方法です。
エラーセルの強調表示
条件付き書式の設定:
=ISNA(A1)
書式:背景色を黄色に設定
複合条件:
=AND(ISNA(A1), B1=”重要”)
書式:背景色を赤に設定
動的な配列処理
Excel 365の動的配列機能と組み合わせた使用方法です。
FILTER関数との組み合わせ
有効なデータのみ抽出:
=FILTER(データ範囲, NOT(ISNA(データ範囲)))
条件に合わない場合はNA:
=FILTER(データ, 条件, NA())
(代替)=IFERROR(FILTER(データ, 条件), NA())
NA関数のよくある活用例と注意点
エラーの種類と使い分け
エクセルには複数のエラータイプがあり、適切に使い分けることが重要です。
#N/A:データが存在しない、該当なし
#DIV/0!:ゼロ除算エラー
#VALUE!:データ型の不一致
#REF!:参照エラー
#NAME?:関数名や範囲名の誤り
NA関数は#N/Aのみを生成し、「データなし」を明示的に表現する場合に使用します。
ISNA関数での判定
#N/A値を判定する専用の関数と組み合わせて使用します。
基本的な判定:
=ISNA(A1) // #N/AならばTRUE
条件分岐での使用:
=IF(ISNA(VLOOKUP(…)), “検索結果なし”, VLOOKUP(…))
カウント:
=SUMPRODUCT(–ISNA(範囲)) // #N/Aの個数
よくある間違いと対策
テキストとしての”#N/A”との混同
誤:=”#N/A” // テキスト文字列
正:=NA() // エラー値
判定方法:
=ISNA(A1) // エラー値の場合TRUE
=A1=”#N/A” // テキストの場合TRUE
他のエラー関数との使い分け
データなし:=NA()
計算不能:=1/0 // #DIV/0!を生成
型エラー:=”a”*1 // #VALUE! を生成(数値化できない文字列を数値演算)
(例)=VALUE(“abc”) や =DATEVALUE(“2025/13/01”) でも #VALUE! を生成します。
NA関数は、データがないことを示す関数
NA関数は、意図的に#N/Aエラーを返すことで「データが存在しない」状態を示すことができる、実務に役立つ情報関数です。特にグラフ作成時には、#N/A を使うことで欠損箇所をギャップ(線を途切れさせる)として明示できます。前後の点を線で結びたい場合はセルを空白にし、[非表示および空白セルの設定]で「線で結ぶ」を選択します(#N/A は結ばれません)。
SUM や AVERAGE は #N/A を含むとエラーになります。#N/A を無視して集計したい場合は、たとえば
- 合計:=AGGREGATE(9,6,範囲)(9:SUM, 6:エラー無視)
- 平均:=AGGREGATE(1,6,範囲)(1:AVERAGE, 6:エラー無視)
- あるいは =SUM(IFNA(範囲,0)) や =AVERAGE(IF(ISNUMBER(範囲),範囲))(配列数式)
といった方法を用いてください。
さらに、条件付き書式やISNA関数との組み合わせにより、可視的なエラーチェックや動的処理も行えます。
シンプルな構文でありながら、エラー処理とデータ可視化の橋渡し役として活躍するNA関数。グラフやレポートで「空白」や「ゼロ」とは異なる意味合いをもたせたい場面で、ぜひ積極的に活用しましょう。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
INDIRECT関数の使い方をわかりやすく解説
ExcelやGoogleスプレッドシートにおけるINDIRECT関数は、セル参照を柔軟に扱う強力なツールです。この関数を使用すると、他のセルのアドレスを文字列として扱い、動的に参照先を変更することが可能になります。たとえば、条件によって異な…
詳しくみるEXACT関数の使い方や複数条件指定の方法を解説
EXACT関数は、ExcelやGoogleスプレッドシートにおいて、文字列が完全に一致するかどうかを判断するための便利な機能です。文字の大文字と小文字まで厳密に比較することができるため、データの整合性を確保する上で重要な役割を果たします。本…
詳しくみるスプレッドシートでタイムラインビューを作成するには?効果的な使い方も解説
Googleスプレッドシートのタイムラインビューは、タスクや日程を時間軸で整理し、プロジェクトの流れを直感的に把握できる便利な機能です。既存のスプレッドシートデータを活用しながら、ガントチャート風に可視化できるため、日々の進捗確認やチームで…
詳しくみるエクセルで日付を文字列(yyyyMMdd)に変換する関数や方法
エクセルを使用する中で、日付データを特定の形式の文字列に変換する必要が出てくることがあります。特に、yyyyMMdd形式の文字列への変換は、データベースとの連携やレポート作成時に有用です。この記事では、エクセルで日付を文字列(yyyyMMd…
詳しくみるスマホでスプレッドシートをPDF化するには?iPhone・Android別の手順と注意点を解説
スマートフォン(スマホ)からGoogleスプレッドシートのPDF化は「アプリの印刷」から行うのが最も確実です。iPhoneは「コピーを送信」→「PDF」、Androidはプリンター選択で「PDFとして保存」が基本です。 外出先から資料共有や…
詳しくみるROW関数の使い方とは?IF関数との組み合わせや応用例まで解説
ROW関数(読み方:ロウ関数)は、Excelでセルの「行番号」を取得するための関数です。 連番の自動入力や位置情報の取得、他関数との組み合わせによるデータ処理の自動化など、幅広い場面で活用できます。 この記事では、ROW関数の基本的な使い方…
詳しくみる