Step 33:VLOOKUPのエラー処理

🛠️ Step 33: VLOOKUPのエラー処理

#N/Aエラーを適切に処理して見やすい表を作ろう!

📋 このステップで学ぶこと

  • #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を返すのがおすすめ。
  • 単価 → 0
  • 数量 → 0
  • 金額 → 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で囲みます。
📝

学習メモ

Excel・Googleスプレッドシート完全マスター - Step 33

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE