Spreadsheet

Excelの#N/A・#VALUE!エラーをAIで直す方法

Excel error修正では、#N/Aと#VALUE!を別の症状として切り分けます。AIへ式だけ渡さず、参照範囲・列の意味・期待値・実データ例を添え、errorをIFERRORで隠す前に原因を検証します。

AIものさし編集部

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/AXLOOKUP / 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: …

出力:

  1. 原因候補を優先順で

  2. 各候補の確認方法

  3. 最小修正式

  4. なぜ直るか

  5. 修正後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

表は横にスクロールできます

CaseInputExpected
Normal存在する商品正しい単価
Not Found存在しない商品意図したNot Found処理
Blank空欄仕様どおり
Space前後SpaceありClean Ruleどおり
Type mismatchText/Number差意図した扱い
Copy式を下へCopyRangeがずれない

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を隠すだけの修正を避けられます。