📋 このステップで学ぶこと
- #N/Aエラーの意味と原因
- IFERROR関数の使い方
- IFNA関数の使い方
- エラーメッセージのカスタマイズ
- 実務での活用例
🎯 1. #N/Aエラーとは
なぜ#N/Aエラーが出るのか
#N/Aは「Not Available(利用できない)」の略で、検索値が見つからないことを示すエラーです。VLOOKUPで最もよく遭遇するエラーですが、これは正常な動作の一部でもあります。
🏠 日常生活に例えると…
電話帳で名前を検索するイメージです。
- 「田中さん」を検索 → 電話番号が見つかる ✅
- 「山田さん」を検索 → 「該当なし」と表示 → これが#N/Aエラー
電話帳に載っていない人を検索したら「見つかりません」と出るのは当然ですよね。
#N/Aエラーが発生する例
📊 商品マスタとの照合(※横スクロールできます)
【商品マスタ】
E列 F列 G列
1 商品コード 商品名 単価
2 A001 ノートPC 80000
3 A002 マウス 2000
4 A003 キーボード 3500
【売上表(VLOOKUPで単価を取得)】
A列 B列 C列
1 商品コード 数量 単価
2 A002 5 2000 ← A002は見つかった
3 A999 3 #N/A ← A999は存在しない!
4 A001 2 80000 ← A001は見つかった
C3の数式: =VLOOKUP(A3,$E$2:$G$4,3,FALSE)
→ A999は商品マスタにないので #N/A エラー
エラー処理の必要性
📊 エラー処理なしの問題(※横スクロールできます)
【問題1】見た目が悪い
A列 B列 C列 D列
1 商品コード 数量 単価 金額
2 A002 5 2000 10000
3 A999 3 #N/A #N/A ← 見た目が悪い
4 A001 2 80000 160000
5 合計 #N/A ← 合計も計算できない!
【問題2】後続の計算がすべてエラーになる
D3の数式: =B3*C3
→ C3が#N/Aなので、D3も#N/A
D5の数式: =SUM(D2:D4)
→ D3が#N/Aなので、合計も#N/A
⚠️ エラーが1つあると、それを使う計算がすべてエラーに!
🔑 エラー処理が必要な理由
- 見た目をきれいにする(印刷にも対応)
- 後続の計算がエラーにならないようにする
- 「見つからない」ことを分かりやすく伝える
🔧 2. IFERROR関数の使い方
IFERROR関数とは
IFERROR関数は、エラーが発生したときに代わりの値を表示する関数です。VLOOKUPと組み合わせて使うことで、#N/Aエラーを分かりやすいメッセージに置き換えられます。
📝 基本の書き方(※横スクロールできます)
=IFERROR(値, エラーの場合の値)
【引数の説明】
値 :計算式やVLOOKUPなど、エラーが出る可能性のある数式
エラーの場合の値:エラーが出たときに表示したい値
【例】
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
意味:
VLOOKUPでエラーが出たら「未登録」と表示
エラーが出なければVLOOKUPの結果をそのまま表示
IFERROR関数の動作イメージ
📊 2つのケース(※横スクロールできます)
【ケース1】データが見つかった場合
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
A2 = “A002″(商品マスタに存在)
処理の流れ:
① VLOOKUP(A2,$E$2:$G$10,3,FALSE) を実行
② 結果: 2000(正常な値)
③ IFERRORはエラーではないので、そのまま 2000 を返す
結果: 2000
【ケース2】データが見つからない場合
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
A2 = “A999″(商品マスタに存在しない)
処理の流れ:
① VLOOKUP(A2,$E$2:$G$10,3,FALSE) を実行
② 結果: #N/A(エラー)
③ IFERRORがエラーを検知し、”未登録” を返す
結果: 未登録
エラーの代わりに表示する値のパターン
📊 よく使う表示パターン(※横スクロールできます)
【パターン1】文字列を表示
=IFERROR(VLOOKUP(…), “未登録”)
→ エラーの場合「未登録」と表示
=IFERROR(VLOOKUP(…), “該当なし”)
→ エラーの場合「該当なし」と表示
=IFERROR(VLOOKUP(…), “N/A”)
→ エラーの場合「N/A」と表示
【パターン2】数値を表示
=IFERROR(VLOOKUP(…), 0)
→ エラーの場合 0 を表示
→ 後続の計算でエラーにならない!
【パターン3】空白を表示
=IFERROR(VLOOKUP(…), “”)
→ エラーの場合、何も表示しない
→ 見た目がすっきり
【パターン4】記号を表示
=IFERROR(VLOOKUP(…), “-“)
→ エラーの場合「-」を表示
✅ どのパターンを使うべき?
- 数値の列:0 を使う(後続の計算でエラーにならない)
- 文字列の列:””(空白)または「未登録」など
- 状況を伝えたい:「該当なし」「退職済」などの説明
🎯 3. IFNA関数の使い方
IFNA関数とは
IFNA関数は、#N/Aエラーだけを処理する関数です。IFERRORとほぼ同じですが、処理するエラーの種類が異なります。
📝 基本の書き方(※横スクロールできます)
=IFNA(値, #N/Aの場合の値)
【例】
=IFNA(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
意味:
#N/Aエラーが出たら「未登録」と表示
それ以外のエラー(#VALUE!など)はそのまま表示
IFERRORとIFNAの違い
| 関数 |
処理するエラー |
使いどころ |
| IFERROR |
すべてのエラー |
VLOOKUPには通常これでOK |
| IFNA |
#N/Aだけ |
他のエラーも表示したい場合 |
📊 エラーの種類と処理(※横スクロールできます)
【Excelの主なエラー】
#N/A :検索値が見つからない(VLOOKUPでよく発生)
#VALUE! :データ型が違う(数値と文字列の計算など)
#DIV/0! :0で割った
#REF! :参照エラー(削除されたセルを参照)
#NAME? :関数名のスペルミス
【IFERRORの場合】
=IFERROR(VLOOKUP(…), “エラー”)
→ #N/A → “エラー” を表示
→ #VALUE! → “エラー” を表示
→ #DIV/0! → “エラー” を表示
→ すべてのエラーが処理される
【IFNAの場合】
=IFNA(VLOOKUP(…), “エラー”)
→ #N/A → “エラー” を表示
→ #VALUE! → #VALUE! のまま表示
→ #DIV/0! → #DIV/0! のまま表示
→ #N/Aだけが処理される
💡 どちらを使うべき?
- 通常はIFERRORを使えばOK
- VLOOKUPで発生するエラーは主に#N/Aなので、どちらでも同じ結果
- 「数式の間違いによるエラーも発見したい」場合はIFNAを使う
迷ったらIFERRORを使いましょう。
💬 4. エラーメッセージのカスタマイズ
場面に応じたメッセージ
状況に応じて、適切なメッセージを表示しましょう。何のデータを検索しているかによって、最適なメッセージが変わります。
| 用途 |
おすすめメッセージ |
数式例 |
| 商品マスタ参照 |
「未登録」「商品なし」 |
=IFERROR(VLOOKUP(…), “未登録”) |
| 社員マスタ参照 |
「該当者なし」「退職済」 |
=IFERROR(VLOOKUP(…), “該当者なし”) |
| 価格表参照 |
0、「価格未設定」 |
=IFERROR(VLOOKUP(…), 0) |
| 見た目重視 |
“”(空白)、”-“ |
=IFERROR(VLOOKUP(…), “”) |
🔢 数値が必要な場合
後続の計算(合計、平均など)がある場合は、
0を返すのがおすすめ。
📝 文字列が必要な場合
状況を伝えたい場合は、
説明文を返すのがおすすめ。
- 商品名 → 「未登録」
- 氏名 → 「該当者なし」
- 部署 → “”(空白)
💼 5. 実務での活用例
例1:売上明細の作成
📊 単価と金額を取得(※横スクロールできます)
【商品マスタ】(別シート「商品マスタ」)
A列 B列 C列
1 商品コード 商品名 単価
2 A001 ノートPC 80000
3 A002 マウス 2000
4 A003 キーボード 3500
【売上表】
A列 B列 C列 D列
1 商品コード 数量 単価 金額
2 A002 5 ? ?
3 A999 3 ? ?
4 A001 2 ? ?
【C2セルの数式(単価)】
=IFERROR(VLOOKUP(A2,商品マスタ!$A$2:$C$100,3,FALSE), 0)
【D2セルの数式(金額)】
=B2*C2
【結果】
A列 B列 C列 D列
1 商品コード 数量 単価 金額
2 A002 5 2000 10000
3 A999 3 0 0 ← エラーの代わりに0
4 A001 2 80000 160000
5 合計 170000 ← 合計も正しく計算できる!
例2:社員情報の参照
📊 氏名と部署を取得(※横スクロールできます)
【社員マスタ】(別シート「社員マスタ」)
A列 B列 C列
1 社員番号 氏名 部署
2 1001 田中太郎 営業
3 1002 佐藤花子 開発
4 1003 鈴木一郎 総務
【出勤簿】
A列 B列 C列
1 社員番号 氏名 部署
2 1001 ? ?
3 1005 ? ? ← 存在しない社員番号
4 1002 ? ?
【B2セルの数式(氏名)】
=IFERROR(VLOOKUP(A2,社員マスタ!$A$2:$C$100,2,FALSE), “該当者なし”)
【C2セルの数式(部署)】
=IFERROR(VLOOKUP(A2,社員マスタ!$A$2:$C$100,3,FALSE), “”)
【結果】
A列 B列 C列
1 社員番号 氏名 部署
2 1001 田中太郎 営業
3 1005 該当者なし (空白) ← 分かりやすいメッセージ
4 1002 佐藤花子 開発
エラー処理ありなしの比較
📊 合計計算への影響(※横スクロールできます)
【エラー処理なし】
A列 B列 C列 D列
1 日付 コード 単価 金額
2 1/15 A001 80000 160000
3 1/16 X999 #N/A #N/A ← エラー
4 1/17 A002 2000 6000
5 合計 #N/A ← 合計も計算できない!
⚠️ 1つでも#N/Aがあると、SUMの結果も#N/Aに
【エラー処理あり】
A列 B列 C列 D列
1 日付 コード 単価 金額
2 1/15 A001 80000 160000
3 1/16 X999 0 0 ← 0に置き換え
4 1/17 A002 2000 6000
5 合計 166000 ← 正しく計算できる!
✅ エラーを0に置き換えることで、合計が計算可能に
🔑 実務でのポイント
- 数値列(単価、金額など)→ 0を返す → 合計が計算できる
- 文字列列(氏名、商品名など)→ 説明文を返す → 状況が分かる
- 印刷する表→ “”(空白)を返す → 見た目がきれい
⚠️ 6. よくある間違いと注意点
間違い1:IFERRORの位置が間違っている
❌ よくある間違い(※横スクロールできます)
❌ 間違い:
=VLOOKUP(IFERROR(A2,$E$2:$G$10,3,FALSE), “未登録”)
→ IFERRORの引数がおかしい(構文エラー)
✅ 正しい:
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
→ VLOOKUP全体をIFERRORで囲む
【覚え方】
=IFERROR( VLOOKUP全体 , エラー時の値 )
↑ここにVLOOKUP丸ごと入れる
間違い2:エラー値を計算で使ってしまう
❌ よくある間違い(※横スクロールできます)
❌ 間違い:
C列(単価)でエラー処理なし
D列(金額)= B列 × C列
→ C列が#N/Aだと、D列も#N/Aになる
単価: #N/A
金額: =5*#N/A → #N/A(エラー伝播)
✅ 正しい:
C列(単価)でエラー処理して0を返す
D列(金額)= B列 × C列
→ 正しく計算できる
単価: 0
金額: =5*0 → 0(正常に計算)
間違い3:すべてのエラーを隠してしまう
⚠️ 注意点(※横スクロールできます)
【問題】
IFERRORを最初から使うと、
数式の間違いによるエラーも隠れてしまう
例:
=IFERROR(VLOOKUP(A2,E2:G10,5,FALSE), “”)
↑列番号が間違っている(3列しかないのに5を指定)
→ 本来は#REF!エラーが出るべき
→ IFERRORで空白に置き換わるので気づかない
【推奨手順】
① まずIFERRORなしで数式を作成
② 正しく動作することを確認
③ 最後にIFERRORを追加
こうすれば、数式の間違いを見逃さない!
⚠️ エラーを隠しすぎない
IFERRORは便利ですが、本当のエラー(数式の間違い)も隠してしまう可能性があります。数式を作成する際は、まず正しく動作することを確認してから、最後にIFERRORを追加しましょう。
📝 練習問題
練習 1
初級
VLOOKUPでエラーが出た場合、「未登録」と表示するようにしてください
元の数式:
=VLOOKUP(A2,$E$2:$G$10,3,FALSE)
エラー処理を追加してください
修正後の数式:
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), “未登録”)
解説:
VLOOKUP全体をIFERROR関数で囲み、第2引数に「未登録」を指定します。これで、検索値が見つからない場合は#N/Aの代わりに「未登録」と表示されます。
練習 2
中級
単価が見つからない場合は0を返し、金額を正しく計算できるようにしてください
A列 B列 C列 D列
1 商品コード 数量 単価 金額
2 A002 5 ? ?
C2に単価、D2に金額(=B2*C2)を計算
エラー処理を追加してください
C2セルの数式(単価):
=IFERROR(VLOOKUP(A2,$E$2:$G$10,3,FALSE), 0)
D2セルの数式(金額):
=B2*C2
解説:
単価でエラーが出た場合は0を返すことで、金額の計算(掛け算)でもエラーが発生しません。0を掛けた結果も0になるので、合計の計算も正しく行えます。
練習 3
上級
氏名と部署を取得し、どちらもエラー処理を行ってください
社員マスタ(E2:G100):
E列 F列 G列
2 1001 田中 営業
3 1002 佐藤 開発
A列 B列 C列
1 社員番号 氏名 部署
2 1005 ? ?
B2に氏名(見つからない場合「退職済」)
C2に部署(見つからない場合は空白)
B2セルの数式(氏名):
=IFERROR(VLOOKUP(A2,$E$2:$G$100,2,FALSE), “退職済”)
C2セルの数式(部署):
=IFERROR(VLOOKUP(A2,$E$2:$G$100,3,FALSE), “”)
解説:
同じ社員番号で複数の情報を取得する場合、それぞれに適切なエラー処理を設定します。氏名は「退職済」と表示することで状況が分かりやすく、部署は空白にすることで見た目がすっきりします。
📝 Step 33 のまとめ
✅ このステップで学んだこと
- #N/Aエラー:検索値が見つからないことを示す正常な結果
- IFERROR関数:すべてのエラーを処理(通常はこれでOK)
- IFNA関数:#N/Aエラーだけを処理
- エラーメッセージ:状況に応じてカスタマイズ(0、””、「未登録」など)
- 実務活用:見た目の改善、後続計算のエラー防止
- 注意点:まず数式を正しく動作させてからIFERRORを追加
🎯 次のステップの予告
VLOOKUPのエラー処理をマスターしました!次のStep 34では、「VLOOKUPの実務活用例」を学びます。実際のビジネスシーンでの使い方を習得します。
❓ よくある質問
Q1: IFERRORとIFNAはどちらを使うべきですか?
VLOOKUPでは通常IFERRORで十分です。IFNAは#N/Aエラーだけを処理し、他のエラーは表示したい特殊な場合に使います。迷ったらIFERRORを使いましょう。
Q2: エラー値に「0」と「””(空白)」のどちらを使うべきですか?
- 数値の場合:0を使うと後続の計算がエラーになりません
- 文字列の場合:””(空白)を使うと見た目がすっきりします
状況に応じて使い分けましょう。
Q3: エラー処理をしたら計算が遅くなりませんか?
わずかに遅くなりますが、通常は気にならないレベルです。見た目の改善やエラー伝播の防止のメリットの方が大きいので、積極的に使用して問題ありません。
Q4: IFERRORを使うとすべてのエラーが隠れてしまいますか?
はい、IFERRORはすべてのエラーを処理します。そのため、まず数式を正しく動作させてから、最後にIFERRORを追加することをお勧めします。これで意図しないエラーを隠すことを防げます。
Q5: エラーメッセージは日本語でないとダメですか?
いいえ、状況に応じて自由に設定できます。「N/A」「-」「該当なし」「未登録」など、分かりやすいメッセージを使いましょう。他の人が見ることを考えて、一般的に理解しやすい表現を選ぶことをお勧めします。
Q6: Googleスプレッドシートでも同じ関数が使えますか?
はい、IFERRORとIFNAはGoogleスプレッドシートでも同じように使えます。構文も全く同じです。
Q7: 複数のVLOOKUPにそれぞれIFERRORを付ける必要がありますか?
はい、エラーが発生する可能性のあるVLOOKUPそれぞれにIFERRORを付けることをお勧めします。1つのセルで複数のVLOOKUPを使う場合は、それぞれにIFERRORを付けるか、数式全体を1つのIFERRORで囲みます。
artnasekai
#artnasekai #学習メモ