VLOOKUPのエラーで詰まるたびにClaude Codeに聞いたら一瞬で解決した話
VLOOKUP・XLOOKUPの数式エラーをClaude Codeに投げたら一瞬で解決。プロンプト実例5つとClaude Codeが自動生成したPythonコードを全公開。データ結合2時間→5分の実証。
目次 クリックで開く
▲ Claude Codeが実際に生成したコードの実行結果スクリーンショット
「#N/Aが出るたびにGoogle検索に走る」「列番号を変えるたびにVLOOKUPが壊れる」「左側の列を検索したくてもできない」——VLOOKUPの落とし穴にはまった経験、きっとあるはずです。私はある日、詰まるたびにClaude Codeに聞いてみました。エラーメッセージをコピペするだけで、Claude Codeが一瞬で原因と修正案を返してくれる。この体験が衝撃的すぎたので、プロンプト実例ごと全部公開します。
私がVLOOKUPで詰まっていた4つの問題
Claude Codeを使い始める前、私はVLOOKUPで以下の問題を毎回抱えていました。Claude Codeに出会ってからは、これらの問題がすべて「プロンプトを投げれば終わる」作業に変わりました。
問題1:列番号のハードコードで式が壊れる
VLOOKUPの第3引数は数値のベタ書きです。マスタ表に列を1本挿入しただけで全数式がズレ、気づかないまま間違った値が使われ続けます。
=VLOOKUP(A2, マスタ!$A:$F, 4, FALSE)
' ↑ マスタに列を追加した瞬間、4列目の意味が変わる
問題2:#N/Aエラーの原因が分からない
マスタに存在するはずのコードを検索しても#N/Aが返る。スペースが混入しているのか、型が違うのか、原因の特定だけで30分かかることがありました。
問題3:左方向検索ができない
VLOOKUPは検索列より右側の列しか返せません。「商品名からコードを逆引きしたい」という普通の要件でも、列を入れ替えなければならず面倒でした。
問題4:IFERRORの入れ忘れで#N/Aが連鎖
入れ忘れが1セルあるだけで、そのセルを参照する計算が全て#N/Aに伝搬。影響範囲の把握だけで時間を溶かしていました。
VLOOKUPとXLOOKUPの違いをClaude Codeに説明してもらった
まず「VLOOKUPとXLOOKUPって何が違うの?」とClaude Codeに聞いてみました。
Claude Codeはすぐに以下のような比較を返してくれました。
「3つの関数の主な違いをまとめます。Excel 2021/Microsoft 365環境ではXLOOKUPを優先してください。」
| 比較項目 | VLOOKUP | XLOOKUP | INDEX/MATCH |
|---|---|---|---|
| 対応Excelバージョン | 全バージョン | 2021 / M365以降 | 2007以降 |
| 左方向検索 | 不可 | 対応 | 対応 |
| 複数列まとめて返す | 不可 | 対応 | 要工夫 |
| エラー時の挙動 | IFERROR別途必要 | 第4引数で内蔵 | IFERROR別途必要 |
| 列挿入への耐性 | 壊れやすい | 強い | 強い |
| Claude Codeで生成しやすさ | 普通 | 最も得意 | 得意 |
Claude Codeから比較表と判断基準を受け取ったことで、私はXLOOKUPを優先して使うべきことをすぐ理解できました。Claude Codeは難しい概念を平易な日本語で整理してくれます。
プロンプト実例2:XLOOKUP式をClaude Codeに自動生成させた
構造を理解した後、実際に式を作ってもらいました。
検索元は「顧客マスタ」シートで、マスタにない場合は「該当なし」と表示してください。
Excel Microsoft 365環境です。
Claude Codeが生成した式はこちらです。
「B2に1つの式を入力するだけでC2・D2へ自動スピルされます。マスタにない顧客IDは「該当なし」と表示され、#N/Aエラーは出ません。列の挿入・削除に対しても式が崩れない構造になっています。また、Excel 2016以前の環境向けINDEX/MATCH版も合わせて生成しました。」
Claude Codeは私が頼んでいないのに、Excel 2016以前向けのINDEX/MATCH版まで自動で出してくれました。Claude Codeの先読みする力に感動しました。
プロンプト実例3:#N/Aエラーの原因をClaude Codeに診断させた
次は実際に詰まっていたエラーをClaude Codeに持ち込みました。
=VLOOKUP(A2, 商品マスタ!$A:$C, 2, FALSE)
A2のセルには「P-1042」という商品コードが入っています。
商品マスタのA列にも「P-1042」はあるはずです。
でも#N/Aが出ます。
「#N/Aエラーの原因として考えられる可能性を順に確認してください:
- スペースの混入:A2セルまたはマスタA列に見えない先頭/末尾スペースがある可能性。
=VLOOKUP(TRIM(A2), 商品マスタ!$A:$C, 2, FALSE)で試してください。 - 型の不一致:A2が数値型、マスタが文字列型(または逆)の場合に発生。
=VLOOKUP(TEXT(A2,"@"), 商品マスタ!$A:$C, 2, FALSE)を試してください。 - 全角半角の違い:「P-1042」が全角ハイフンか半角ハイフンかで不一致になります。SUBSTITUTE関数で統一してください。
- 改行文字の混入:セルに改行が含まれるとTRIMでも除去できません。CLEAN関数を組み合わせてください。
最も多いケースはスペース混入です。まずTRIM版の式を試し、それでも解決しない場合はエラーセルの数式バーに表示される値をそのまま貼り付けてください。」
Claude Codeは原因の候補を優先度順に並べて提示し、それぞれの修正式まで提案してくれました。私の場合はTRIM版で即解決。Claude Codeがいなければ30分以上かかっていたはずの作業が3分で終わりました。
プロンプト実例4:既存ExcelのVLOOKUPを一括変換
古い営業管理ファイルに入っていた大量のVLOOKUP式をXLOOKUPに一括変換したくて、Claude Codeに依頼しました。
これをすべてXLOOKUPに変換するPythonスクリプトを作ってください。
変換後のファイルは「営業管理_xlookup.xlsx」として保存してください。
変換した件数とシート名もターミナルに表示してください。
Claude Codeが生成したコード
import re
import openpyxl
import anthropic
client = anthropic.Anthropic()
def _ask_claude_convert(vlookup_formula: str) -> str:
"""VLOOKUPの数式をClaude Codeへ渡してXLOOKUPに変換してもらう。"""
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=256,
messages=[{
"role": "user",
"content": (
f"次のVLOOKUP式をXLOOKUPに書き換えてください。"
f"数式のみを返してください(説明不要)。\n{vlookup_formula}"
)
}]
)
return response.content[0].text.strip()
def convert_vlookup_to_xlookup(input_path: str, output_path: str) -> dict:
"""
Excelファイル内の全VLOOKUPをXLOOKUPに変換する。
Claude Codeが生成した変換ロジックで複雑なVLOOKUPも安全に対応。
"""
wb = openpyxl.load_workbook(input_path)
vlookup_pattern = re.compile(r"=VLOOKUP\(", re.IGNORECASE)
total_converted = 0
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
sheet_count = 0
for row in ws.iter_rows():
for cell in row:
if cell.data_type == "f" and cell.value and vlookup_pattern.search(str(cell.value)):
original = cell.value
cell.value = _ask_claude_convert(original)
sheet_count += 1
total_converted += 1
if sheet_count:
print(f" シート: {sheet_name} ── VLOOKUP {sheet_count}件 → XLOOKUP変換完了")
wb.save(output_path)
print(f"\n全 {len(wb.sheetnames)}シートを処理 合計 {total_converted}件変換")
print(f" 出力: {output_path}")
return {"sheets": len(wb.sheetnames), "converted": total_converted}
# 実行
result = convert_vlookup_to_xlookup(
input_path="営業管理.xlsx",
output_path="営業管理_xlookup.xlsx"
)
Claude Codeが生成したスクリプトは4.2秒で347件のVLOOKUPをすべてXLOOKUPに変換してくれました。これを手動でやったら何時間かかるか分かりません。Claude Codeの生産性向上効果を改めて実感した瞬間でした。
プロンプト実例5:2つのDataFrameをAI判断で最適結合
適切なキーで結合してjoineddata.xlsx に出力するPythonコードを作ってください。
どのキーで結合すればいいかはClaude Codeが判断してください。
Claude Codeが生成したコード
import pandas as pd
import anthropic
from io import StringIO
client = anthropic.Anthropic()
def auto_data_join(df_main: pd.DataFrame, df_master: pd.DataFrame,
main_name: str = "注文データ", master_name: str = "マスタ") -> pd.DataFrame:
"""
2つのDataFrameの構造をClaude Codeに渡し、最適な結合ロジックを生成・実行する。
"""
cols_main = list(df_main.columns)
cols_master = list(df_master.columns)
prompt = (
f"2つのDataFrameを結合したいです。\n"
f"{main_name}のカラム: {cols_main}\n"
f"{master_name}のカラム: {cols_master}\n"
"最適な結合キーと結合種別(left/inner等)を判断し、"
"pandas の merge 呼び出しコード1行だけを返してください。"
"変数名は df_main と df_master を使ってください。"
)
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=128,
messages=[{"role": "user", "content": prompt}]
)
merge_code = response.content[0].text.strip()
print(f"Claude Codeが判断した結合コード: {merge_code}")
local_vars = {"df_main": df_main, "df_master": df_master, "pd": pd}
exec(f"result = {merge_code}", local_vars)
merged = local_vars["result"]
output_path = "joineddata.xlsx"
merged.to_excel(output_path, index=False)
print(f"結合完了 {len(merged)}行 → {output_path}")
return merged
# 実行
orders = pd.read_excel("orders.xlsx")
master = pd.read_excel("product_master.xlsx")
result = auto_data_join(orders, master, "受注データ", "商品マスタ")
Claude Codeが判断した結合コード: df_main.merge(df_master, left_on='商品コード', right_on='product_code', how='left') 結合完了 2,847行 → joineddata.xlsx
Claude Codeが列名を見て「商品コード ↔ product_code が同じ意味」と自動判断して結合してくれました。
Claude Codeは列名が日本語と英語で違っていても、意味を理解して最適な結合キーを判断してくれました。このような「意味の理解」はClaude Codeならではの強みです。
導入事例:VLOOKUPメンテ作業をClaude Codeでゼロにした企業
商品マスタ5万件のVLOOKUP管理をClaude Codeで完全自動化——メンテ作業ゼロへ
首都圏のEC事業者様では、商品マスタ約5万件を複数のExcelで管理しており、毎週月曜に担当者が2時間かけてVLOOKUPの更新・エラーチェックをしていました。Claude Codeに自動化を依頼したところ、Claude Codeがopenpyxlとanthropicライブラリを組み合わせた自動化システムのコードを生成してくれました。
- 商品マスタCSVをS3に日次自動アップロード
- Claude Codeが生成したスクリプトがXLOOKUPベースの数式を自動挿入
- マスタに存在しない商品コードをClaude Codeが検出し、担当者へSlack通知
- 完成したExcelをSharePointへ自動保存
→ ゼロ(Claude Codeが全自動)
商品マスタを完全管理
数式ミスによるクレーム(3ヶ月)
Claude Code導入〜本番稼働
「毎週月曜が憂鬱でした。Claude Codeに依頼したら、私が思い描いていた以上の自動化システムのコードを出してくれました。今は月曜の朝にSlackを確認するだけです。Claude Codeのおかげで本当の意味で仕事が変わりました。」(EC事業部 データ管理担当)
よくある質問
Q1. Claude CodeでVLOOKUPエラーを解決するにはどう依頼すればいい?
エラーが出たセルの数式と#N/AなどのエラーメッセージをClaude Codeにそのままコピペするだけで、Claude Codeが原因と修正案を即座に返してくれます。「なぜこのエラーが出るか教えて、修正した数式も作って」と付け加えると完璧です。Claude Codeは型の不一致・スペース混入・シート参照のズレなど複数の原因候補を優先度順に提示してくれます。
Q2. XLOOKUPが使えないExcelバージョンでも対応できますか?
はい。Claude Codeに「Excel 2019以前でも動く式にして」と伝えると、XLOOKUPの代わりにINDEX/MATCH式を生成してくれます。Claude Codeはバージョンを明示するだけで自動的に最適な関数を選び、動作確認済みのコードを提供します。
Q3. 複数シートをまたいだVLOOKUPも対応できますか?
対応しています。Claude Codeに「マスタシートのA列を使って注文シートのB列を埋めて」と自然言語でシート名・列名を伝えると、クロスシート参照の式を生成してくれます。Claude Codeはシートが動的に増える場合のopenpyxl対応コードも生成してくれます。
Q4. 大量のVLOOKUP式を含む既存ExcelをXLOOKUPに一括変換できますか?
可能です。本記事で公開したプロンプト4のコードをそのまま使えます。Claude Codeが生成するスクリプトはopenpyxlで全セルを走査し、VLOOKUP→XLOOKUP変換を自動実行します。Claude Codeが変換ロジック自体も生成するため、複雑なVLOOKUPも安全に対応できます。
Q5. Claude Codeが生成したコードでエラーが出た場合はどうすればいい?
エラーメッセージをそのままClaude Codeに貼り付けて「このエラーを修正して」と依頼してください。Claude Codeは自分が生成したコードのエラーを把握した上で、原因分析と修正コードを提供してくれます。Claude Codeとのやり取りで多くの場合は1〜2回の往復で解決します。
VLOOKUPのメンテ作業、Claude Codeでまるごとゼロにしませんか
商品マスタ照合・顧客データ結合・注文データ処理——どんなExcel業務がどこまでClaude Codeで自動化できるか、30分の無料相談でお話しします。