VLOOKUPのエラーで詰まるたびにClaude Codeに聞いたら一瞬で解決した話

VLOOKUP・XLOOKUPの数式エラーをClaude Codeに投げたら一瞬で解決。プロンプト実例5つとClaude Codeが自動生成したPythonコードを全公開。データ結合2時間→5分の実証。

この記事をシェア:
目次 クリックで開く

Claude Code 体験レポート / VLOOKUP / XLOOKUP

2026年4月25日  |  読了 約12分  |  Aurant Technologies

Claude CodeによるVLOOKUP/XLOOKUP自動化デモ

▲ 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分かかることがありました。

典型的な失敗例:「P-1042」を検索したら「P-1040」の値が返っていた。第4引数のFALSE指定漏れが原因でしたが、エラーにならないため発見が遅れました。

問題3:左方向検索ができない

VLOOKUPは検索列より右側の列しか返せません。「商品名からコードを逆引きしたい」という普通の要件でも、列を入れ替えなければならず面倒でした。

問題4:IFERRORの入れ忘れで#N/Aが連鎖

入れ忘れが1セルあるだけで、そのセルを参照する計算が全て#N/Aに伝搬。影響範囲の把握だけで時間を溶かしていました。

VLOOKUPとXLOOKUPの違いをClaude Codeに説明してもらった

まず「VLOOKUPとXLOOKUPって何が違うの?」とClaude Codeに聞いてみました。

私がClaude Codeに入力したプロンプト(1つ目)Excel初心者です。VLOOKUPとXLOOKUPとINDEX/MATCHの違いを、日本語で比較表にまとめてください。どれを使うべきか判断基準も教えてください。

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に自動生成させた

構造を理解した後、実際に式を作ってもらいました。

私がClaude Codeに入力したプロンプト(2つ目)顧客IDからA列を検索して、顧客名・担当者・地域の3列をまとめてB列:D列に返すXLOOKUP式を作ってください。
検索元は「顧客マスタ」シートで、マスタにない場合は「該当なし」と表示してください。
Excel Microsoft 365環境です。

Claude Codeが生成した式はこちらです。

Claude Code — 生成結果 Claude Code: =XLOOKUP(A2, 顧客マスタ!$A:$A, 顧客マスタ!$B:$D, “該当なし”) A列: 顧客ID (検索キー) / B列: 顧客名 / C列: 担当者 / D列: 地域 B2に入力するだけで C2・D2 へ自動スピルされます。 ✓ 複数列スピル対応 ✓ エラー代替値内蔵 ✓ 列挿入に強い Excel 2016以前の環境: =IFERROR(INDEX(顧客マスタ!$B:$D,MATCH(A2,顧客マスタ!$A:$A,0),{1,2,3}),”該当なし”)
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に持ち込みました。

私がClaude Codeに入力したプロンプト(3つ目)以下のVLOOKUP式で#N/Aエラーが出ています。原因を教えて、修正した式も作ってください。

=VLOOKUP(A2, 商品マスタ!$A:$C, 2, FALSE)

A2のセルには「P-1042」という商品コードが入っています。
商品マスタのA列にも「P-1042」はあるはずです。
でも#N/Aが出ます。

Claude Codeの回答

「#N/Aエラーの原因として考えられる可能性を順に確認してください:

  1. スペースの混入:A2セルまたはマスタA列に見えない先頭/末尾スペースがある可能性。=VLOOKUP(TRIM(A2), 商品マスタ!$A:$C, 2, FALSE) で試してください。
  2. 型の不一致:A2が数値型、マスタが文字列型(または逆)の場合に発生。=VLOOKUP(TEXT(A2,"@"), 商品マスタ!$A:$C, 2, FALSE) を試してください。
  3. 全角半角の違い:「P-1042」が全角ハイフンか半角ハイフンかで不一致になります。SUBSTITUTE関数で統一してください。
  4. 改行文字の混入:セルに改行が含まれるとTRIMでも除去できません。CLEAN関数を組み合わせてください。

最も多いケースはスペース混入です。まずTRIM版の式を試し、それでも解決しない場合はエラーセルの数式バーに表示される値をそのまま貼り付けてください。

Claude Codeは原因の候補を優先度順に並べて提示し、それぞれの修正式まで提案してくれました。私の場合はTRIM版で即解決。Claude Codeがいなければ30分以上かかっていたはずの作業が3分で終わりました。

プロンプト実例4:既存ExcelのVLOOKUPを一括変換

古い営業管理ファイルに入っていた大量のVLOOKUP式をXLOOKUPに一括変換したくて、Claude Codeに依頼しました。

私がClaude Codeに入力したプロンプト(4つ目)営業管理.xlsx というファイルがあり、全12シートに合計347個のVLOOKUP式が含まれています。
これをすべて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 — bash(実行結果) スキャン中… シート: 1月実績 ── VLOOKUP検出: 24件 → XLOOKUP変換完了 シート: 2月実績 ── VLOOKUP検出: 31件 → XLOOKUP変換完了 シート: 3月実績 ── VLOOKUP検出: 28件 → XLOOKUP変換完了 … (計12シート処理) … 12シートのVLOOKUP式をXLOOKUPに自動変換しました 合計 347件変換 / 処理時間 4.2秒 / 出力: 営業管理_xlookup.xlsx

Claude Codeが生成したスクリプトは4.2秒で347件のVLOOKUPをすべてXLOOKUPに変換してくれました。これを手動でやったら何時間かかるか分かりません。Claude Codeの生産性向上効果を改めて実感した瞬間でした。

プロンプト実例5:2つのDataFrameをAI判断で最適結合

私がClaude Codeに入力したプロンプト(5つ目)orders.xlsx(受注データ)とproduct_master.xlsx(商品マスタ)を読み込んで、
適切なキーで結合して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でゼロにした企業

EC・小売 / 商品マスタ管理

商品マスタ5万件のVLOOKUP管理をClaude Codeで完全自動化——メンテ作業ゼロへ

首都圏のEC事業者様では、商品マスタ約5万件を複数のExcelで管理しており、毎週月曜に担当者が2時間かけてVLOOKUPの更新・エラーチェックをしていました。Claude Codeに自動化を依頼したところ、Claude Codeがopenpyxlとanthropicライブラリを組み合わせた自動化システムのコードを生成してくれました。

  1. 商品マスタCSVをS3に日次自動アップロード
  2. Claude Codeが生成したスクリプトがXLOOKUPベースの数式を自動挿入
  3. マスタに存在しない商品コードをClaude Codeが検出し、担当者へSlack通知
  4. 完成したExcelをSharePointへ自動保存
週2h
→ ゼロ(Claude Codeが全自動)
5万件
商品マスタを完全管理
0件
数式ミスによるクレーム(3ヶ月)
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分の無料相談でお話しします。

無料相談を申し込む(30分)
他の記事を見る


AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: