Excelの#N/Aと#VALUE!は、どちらも「式が壊れた」ように見えますが、切り分け方が違います。#N/Aは検索系の式で「探した値を見つけられない」ケースが多く、#VALUE!は引数や参照値の型・内容が式の期待と合わないときに出ます。最初からIFERRORで隠すのではなく、原因を再現してから修正します。
この記事では、AIへ渡すDebug Packet、#N/Aと#VALUE!の具体例、式を小さく分解する方法、修正後のTest Matrixまで進めます。読後には、エラー表示を消すだけでなく「なぜ起きたか」「修正後も正しい値が返るか」を確認できる状態を目指します。
目次
まずError Typeを分ける
最初の分岐は、表示されたErrorをそのまま記録することです。#N/Aと#VALUE!を同じPromptで「直して」と依頼すると、原因候補が広がりすぎます。
表は横にスクロールできます
| Error | 最初に見る場所 | 典型的な確認 |
|---|---|---|
| #N/A | XLOOKUP / VLOOKUP / MATCH等 | Lookup値が存在するか、表記・型が一致するか |
| #VALUE! | 演算・関数の引数 | Text混在、無効な引数、参照値の型 |
Error Typeは原因そのものではなく、調査の入口です。
AIへ式だけを渡さない
AIに「=XLOOKUP(D2,A:A,B:B)が#N/Aです」とだけ渡しても、D2の値やA列のDataが分からなければ推測が増えます。
最低限、数式、各Rangeの意味、InputのSample、期待値、実際のError、完全一致/近似一致の意図をセットにします。
Debug Packetを作る
例:
Formula: =XLOOKUP(D2,A2:A100,B2:B100)
A列: 商品名
B列: 単価
D2: 検索したい商品名
Expected: D2が「りんご」なら120
Actual: #N/A
Match intent: 完全一致
Sample: A2=りんご / B2=120
Recent change: CSVから商品名を貼り付け
このPacketがあると、AIは「式の構文」だけでなくData側の原因を見られます。
#N/Aの切り分け1:検索値が本当に存在するか
まずD2の見た目ではなく、検索範囲に同じ値があるか確認します。商品名が「りんご」に見えても、末尾Space、全角/半角、別文字、改行が混ざると一致しないことがあります。
見つからない場合は式を変える前に、Dataが正しいかを確認します。存在しない商品を無理に別商品へMatchさせる修正はしません。
#N/Aの切り分け2:前後Spaceを疑う
架空例として、D2が「りんご␠」でA2が「りんご」なら、完全一致のLookupでは別文字列として扱われます。
まず別Cellで =TRIM(D2) を試し、結果が期待する文字列になるか確認します。その上でCleanした値をLookupへ使うか、入力Data自体を整えるか決めます。
式にTRIMを足せば終わりではありません。CSV取込など原因が継続するなら、入力工程でCleanする方が再発防止になります。
#N/Aの切り分け3:数字とTextの違い
商品コード「00123」と数値123は、人には近く見えても同じDataとは限りません。先頭0が意味を持つIDなら、数値へ変換すると別IDになる可能性があります。
AIに「型を揃えて」とだけ頼まず、そのColumnがIDなのか計算用数値なのかを伝えます。IDならTextとして保持する方が適切な場合があります。
#N/Aの切り分け4:検索範囲と返却範囲
Lookup RangeとReturn Rangeの対応がずれていないか確認します。Row数、開始位置、参照Sheetが意図通りかを見ます。
コピーで式を横・下へ展開したあとに参照がずれた場合は、絶対参照/相対参照の設計も確認します。AIへは元Cellとコピー後Cellの式を両方渡すと差分を見つけやすくなります。
#VALUE!の切り分け1:演算対象にTextが混ざっていないか
例としてA2が100、B2が「未定」で =A2+B2 を計算すれば、数値として扱えない値が混ざっているためエラー原因になります。
ここで「未定を0に変える」のが正しいとは限りません。Business Ruleとして未定は計算対象外なのか、0扱いなのか、入力ミスなのかを決めてから修正します。
#VALUE!の切り分け2:Functionの引数を小さく確認する
長い式で#VALUE!が出る場合、式全体を一気に書き換えず、内側のFunctionから確認します。
たとえば =FUNCTION_A(FUNCTION_B(A2),FUNCTION_C(B2)) のような構造なら、FUNCTION_B(A2)とFUNCTION_C(B2)を別Cellで実行し、どちらでErrorが発生するかを見ます。
原因箇所を特定してからAIへ渡すと、不要な式変更を減らせます。
#VALUE!の切り分け3:日付・数字に見えるText
セル表示が「2026/10/01」や「1,200」に見えても、Import方法によってTextとして入っている場合があります。
そのFieldを本当に日付・数値へ変換すべきか確認します。商品コードや郵便番号のように見た目が数字でもTextで持つべきFieldもあります。
式を最小再現へ縮める
1000行のSheetでErrorが出る場合、問題行1〜3件だけを別領域へコピーし、最小Sampleで再現します。
たとえば正常Row、Error Row、空欄Rowの3件を用意します。AIへ巨大Sheetを説明するより、Dataと式の関係が明確になります。
架空例:#N/Aを原因まで確認する
A2:A4 = りんご / みかん / ぶどう、B2:B4 = 120 / 100 / 180、D2 = 「りんご 」とします。
元式 =XLOOKUP(D2,A2:A4,B2:B4) は検索値の末尾Spaceが原因候補です。まずF2に =TRIM(D2) を置き、F2が「りんご」になることを確認。その後 =XLOOKUP(F2,A2:A4,B2:B4) で120が返るかTestします。
この例の目的は「TRIMを必ず使う」ことではなく、原因を可視化してから修正することです。
架空例:#VALUE!をBusiness Ruleまで確認する
A2=100、B2=未定、C2==A2+B2 で#VALUE!とします。
修正前に「未定は0として合計するのか」「値が決まるまで合計も未確定にするのか」を決めます。後者なら0へ変換して計算を通すより、「未定があるため計算保留」と表示する方が正しいかもしれません。
Error修正はFormulaの問題だけでなく、Data Ruleの問題でもあります。
AIへの依頼文
「以下のExcel ErrorをDebugしてください。
Error Type: #N/A
Formula: …
Range meaning: …
Sample data: …
Expected: …
Actual: …
Match rule: …
出力:
-
原因候補を優先順で
-
各候補の確認方法
-
最小修正式
-
なぜ直るか
-
修正後Test Case
IFERRORで隠す前にRoot Causeを確認してください。Dataを勝手に0や空欄へ変換しないでください。」
AIには修正式だけでなく、確認手順も出させます。
IFERRORは最後に使う
IFERRORで別表示へ置き換えるとUser Experienceは改善しますが、Root Causeが消えたわけではありません。
まず正常CaseとError Caseを確認し、想定された「見つからない」だけをUser-facingに整えたい場合にError Handlingを追加します。予期しないData Errorまで全部空欄にすると、不具合を見逃しやすくなります。
修正後のTest Matrix
表は横にスクロールできます
| Case | Input | Expected |
|---|---|---|
| Normal | 存在する商品 | 正しい単価 |
| Not Found | 存在しない商品 | 意図したNot Found処理 |
| Blank | 空欄 | 仕様どおり |
| Space | 前後Spaceあり | Clean Ruleどおり |
| Type mismatch | Text/Number差 | 意図した扱い |
| Copy | 式を下へCopy | Rangeがずれない |
1件直っただけで全範囲へ適用しません。
変更前後を記録する
Original Formula、Root Cause、Changed Formula、Test Resultを残します。
AIが複数箇所を同時に書き換えると、何が効いたか分からなくなります。最初は1つの原因に対して1つの変更を行い、Testしてから次へ進みます。
止めるべきケース
次の場合はAIの修正式をそのまま全体適用しません。
-
Business Ruleが不明
-
Lookup Keyの正規化でID意味が変わる
-
他SheetやExternal Linkが絡む
-
Array Formulaや複雑な依存がある
-
正常Caseまで値が変わる
-
Errorが消えたが期待値と違う
「Errorが消えた」は合格条件ではなく、Expected Outputが返ることが合格条件です。
AIものさしの判断
#N/Aと#VALUE!を直すときは、Error Type→Data→Formula→Expected Outputの順で切り分けます。AIに式だけを見せるより、Debug Packetと最小Sampleを渡す方がRoot Causeへ近づきやすくなります。
まずError Rowを1件選び、正常Rowと並べてください。#N/AならLookup値・表記・型・範囲、#VALUE!なら引数・Text混在・型を確認する。修正後はNormal / Not Found / Blank / Type差のTestを通してから全範囲へ適用すれば、Errorを隠すだけの修正を避けられます。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026-10-09
Microsoft Support:エラー値 #N/A を修正する方法(新しいタブで開く)
