doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

「エラーが出ます」はNG|ClaudeでExcelの #N/A を一発特定する質問テンプレ

スポンサーリンク

Excelのデバッグでいちばん効く聞き方は、「答え」ではなく「答えを検証する手段」まで一緒に要求することです。原因の候補を3つ挙げてもらうだけでは「たぶんこれかも」で止まりますが、=LEN(A2) のような切り分け用の数式を同時に出させると、その場で真犯人を確定できます。

#N/A#VALUE! で手が止まったとき、検索して出てくるのは「原因はいくつか考えられます」という一般論ばかり。Claudeが強いのは、あなたの数式そのものを読んで、その数式固有の原因を指摘できる点です。ただし聞き方を外すと、Claudeも一般論しか返しません。

なぜ「エラーが出ます」では解決しないのか

NG質問の典型がこれです。

VLOOKUPでエラーが出ます。直してください。

これに対する返答は、だいたいこうなります。

VLOOKUPのエラーにはいくつか原因が考えられます。①検索範囲の左端に検索値がない ②検索値の型が異なる ③範囲の指定がずれている——まずは参照範囲をご確認ください。

間違ってはいませんが、自分のシートのどれに当たるかは結局自分で試すことになります。原因を1つに絞るには、数式・エラー名・データの見た目の3点が最低限必要です。

数式エラー用|コピペ質問テンプレート

Excelの数式でエラーが出ています。原因を特定して修正版をください。

【エラー内容】
セルD2に #N/A

【現在の数式】
=VLOOKUP(A2,商品マスタ!A:C,3,FALSE)

【データの状況】
- A2の値:「A-1001」(他システムからコピペしたもの)
- 商品マスタ!A列:A-1001、A-1002… が並んでいる
- 見た目は一致しているのに一致判定されない

【環境】
Microsoft 365 / Windows

【欲しい答え】
1. 考えられる原因を可能性の高い順に3つ
2. 原因を切り分けるための確認用の数式
3. 修正後の数式(そのまま貼れる形で)

このテンプレだとClaudeはこう返す

原因の候補(可能性の高い順) 1. A2の末尾に空白や改行が混入している(他システムからのコピペで頻出) 2. 全角ハイフンと半角ハイフンの混在 3. 見た目は同じでも片方が文字列型、片方が数値型

切り分け用の数式(空きセルに貼って確認) - =LEN(A2)&"/"&LEN(商品マスタ!A2) … 桁数が違えば原因1 - =CODE(RIGHT(A2,1)) … 32なら末尾に半角空白、10なら改行 - =ISNUMBER(A2)&"/"&ISNUMBER(商品マスタ!A2) … 食い違えば原因3

修正後の数式 =IFERROR(VLOOKUP(TRIM(CLEAN(A2)),商品マスタ!A:C,3,FALSE),"該当なし")

桁数が「6/5」のように食い違えば原因は確定。推測が検証に変わるのが、この聞き方の価値です。

使う前に:データのマスキング

質問には実データではなくダミー値を使ってください。取引先名は「A社」「B社」、金額は桁だけ揃えた架空の数字で十分です。原因究明に必要なのは値そのものではなく、データの形式と構造だからです。社内ルールがある場合はそちらを優先してください。

実行時エラー1004・9を解決するVBA用テンプレート

VBAでエラーが発生します。原因と修正コードを教えてください。

【エラーメッセージ】
実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです

【エラーが止まる行】
Range(Cells(1,1), Cells(lastRow, 5)).Select

【コード全文】
(ここにコードを貼る)

【やりたいこと】
シート「集計」のA1からE列最終行までを選択してコピーしたい

【条件】
- 修正はコード全文で返してください
- なぜそのエラーになったのかも1〜2行で説明してください
- より良い書き方があれば併せて提案してください

「コード全文で返して」は地味に効きます。差分だけ返されると、どこに入れるか迷って結局動かない事故が減ります。

そして最後の一行を足すと、返ってくる答えの質が変わります。

原因Cells のシート指定がないため、アクティブシートが「集計」以外のときに Range と参照シートが食い違い、1004になります。

ただし、そもそも .Select は不要です。 vba With ThisWorkbook.Worksheets("集計") .Range(.Cells(1, 1), .Cells(lastRow, 5)).Copy End With With でシートを固定し、.Cells の先頭にピリオドを付けるのが定石。選択せずに直接コピーできるため、アクティブシート依存のバグが構造的に起きなくなります。

「エラーが直る」から「コードが良くなる」へ。ひとこと足すだけで、返答の価値が一段上がります。

エラー種類別|追加で伝えると効く情報

エラー Claudeに追加で伝えること
#N/A 検索値と参照先の実際の中身、LEN()CODE()の結果
#VALUE! 引数に文字列が混ざっていないか、空白セルの有無
#REF! 直前に行や列を削除したか、シート名を変えたか
#DIV/0! 分母が空欄になり得るか、その時どう表示したいか
#NAME? Excelのバージョン(XLOOKUPやFILTERが使えない環境か)
#NUM! 引数が範囲外か、反復計算が必要な数式か
#SPILL! こぼれ先の範囲に何か入力されていないか

特に #NAME?バージョン起因が非常に多いので、「Excel 2019です」と一言添えるだけで、使えない関数を提案されるムダが消えます。

エラーは出ないのに答えが違う「静かなバグ」

実務でやっかいなのは、エラー表示が出ないのに数字が合わないケース。ここでは期待値と実際値をセットで渡すのが鍵です。

数式はエラーになりませんが、結果が想定と違います。

【数式】
=SUMIFS(売上!C:C,売上!A:A,">="&E1,売上!A:A,"<="&E2)

【期待する結果】1,250,000
【実際の結果】0

【前提】
- E1/E2は日付(2026/4/1、2026/4/30)
- 売上!A列も日付のはずだが、他システムからのCSV取り込み

原因の候補と、A列が本当に日付型かを確認する数式を教えてください。

差分を明示すると仮説が立てやすくなり、「CSV取り込みで日付が文字列として入っている」という定番の落とし穴に一直線でたどり着けます。確認用には =ISNUMBER(売上!A2) が返ってくるはずで、FALSE なら文字列型で確定です。

コピー用|テンプレート3種の使い分け

症状 使うテンプレ 必ず入れる項目
セルにエラー表示が出る 数式エラー用 数式・エラー名・セル番地・バージョン
マクロが途中で止まる VBA用 エラー番号・停止行・コード全文
エラーは出ないが数値が違う 静かなバグ用 期待値・実際値・データの出所

3つとも共通で、末尾にこの一文を必ず添えてください。

原因の候補に加えて、それを切り分けるための確認用の数式も出してください。

まとめ

  1. 答えだけでなく「検証手段」を要求する——これが最も効きます
  2. 数式やコードは要約せずそのまま貼る
  3. エラー名と発生セル(またはエラー番号と停止行)を書く
  4. Excelのバージョンを添える
  5. VBAなら「より良い書き方があれば提案して」を足す

テンプレをメモアプリに保存しておけば、あとは穴埋めするだけ。「なんとなく直った」を卒業して、原因を確かめながら潰していけるのが、Claudeを使ったデバッグの一番の価値です。


関連記事

あわせてチェック