4-2 Claude Code で Excel 加工|VLOOKUP・ピボット自動化
無料VLOOKUP・ピボットテーブル・条件付き集計など Excel の重い加工処理を Claude Code に丸投げする実戦パターン。openpyxl / pandas を使い分け、関数地獄から抜け出す具体プロンプトを徹底解説。
このレッスンで身につくこと
第 3 章で扱った「Excel 整理」が 入口に揃えるところまで だとすれば、このレッスンは 整ったデータをどう加工して意思決定に使える形まで持っていくか の話です。VLOOKUP・ピボット・条件付き集計・重複削除・表記揺れ統一 — Excel で覚えるのに半年かかる重い操作を、Claude Code に日本語 1 行で代行させる勘所をまとめます。
このレッスンのゴール
- VLOOKUP 相当 の複数シート結合を、結合タイプと複合キー指定込みで実行できる
- ピボット相当 のクロス集計を、軸・値・小計の指定込みで指示できる
- 条件付き集計 を 自然言語のスコア式 で記述できる
- 重複削除・表記揺れ統一 の「自信度」を分けて扱う発想を持てる
- .xlsx 直接 vs CSV 経由 の判断軸を、自分の業務に当てはめて選べる
- 数値型崩壊・文字化け・マクロ干渉 の 3 大事故を、プロンプト 1 行で防げる
所要時間 — 約 45 分 難易度 — ★★☆☆☆(第 3 章「Excel 整理」を読んだ前提)
「整理」と「加工」は別物
第 3 章「Excel 整理」は バラバラのデータを揃える ところまで。文字コード統一・氏名フォーマット統一・型修正など、「分析の前夜」までの作業 でした。本レッスンは その先、整ったデータを 分析に使える形に変形する ところ、VLOOKUP / ピボット / 条件付き集計 / 名寄せ を扱います。
| フェーズ | 何をするか | 代表操作 | レッスン |
|---|---|---|---|
| 整理 | バラバラのデータを揃える | 文字コード変換・型修正 | 3-3 |
| 加工 | 揃ったデータを変形する | VLOOKUP・ピボット・集計・名寄せ | 4-2 |
| 出力 | 加工結果を意思決定に渡す | レポート HTML・PDF・Slack | 4-1 / 4-3 |
整理と加工は道具立てがまるで違います。整理は文字列処理+型変換、加工は キーで突き合わせる結合・集約・ランキング が中心。同じ「Excel 作業」でも、プロンプトに出てくるキーワードはほぼ別物です。
手作業 Excel の限界
「VLOOKUP くらい書ける」と思った方こそ読んでください。慣れている人ほど Claude Code への置き換え効果が大きい 領域です。
限界 1 — 関数の組み合わせが爆発する。「複合キー × MATCH × フォールバック × IFERROR」を組むと関数 4 個ネスト。引数 1 つずらせば全行壊れる地雷原です。Claude Code なら 5 行の日本語で済みます。
限界 2 — ピボットは「組み直し」が遅い。最初の作成は 3 分、組み直しを 5 回繰り返すと 30 分。Claude Code なら 1 行書き換えるだけで組み直し完了、試行錯誤の回数が 10 倍 増えます。
限界 3 — 大量データで Excel が固まる。10 万行超えるとピボット更新で 30 秒待ち。Claude Code は裏で pandas / DuckDB を呼ぶので、100 万行でも秒。
限界 4 — 式が引き継げない。「これ何の数字?」を読み解くのに半日。Claude Code なら式から日本語の説明文に翻訳できます。
"100 行以下 / シンプルな SUM / 一度きり" は無理に Claude Code に渡す必要はありません。「同じ加工を 2 回以上」「1,000 行を超える」「式が 3 階建てを超える」 — このどれかに当てはまったら、Claude Code を呼ぶ合図です。
パターン 1 — 複数シート結合 + VLOOKUP 相当
加工パターンの 1 つ目、VLOOKUP / XLOOKUP の領域です。
基本プロンプト
> sales-2026-04.csv に products.csv の情報を結合して。
> キー: 商品コード(両ファイルとも「product_code」列)
> 結合タイプ: 左外部結合(sales 側の行は全部残す)
> 取得列: 「カテゴリ」「原価」「メーカー」
> マスターに無い商品コードは別ファイル unmatched.csv に記録、
> 結合後は空欄ではなく「未登録」と入れる。
> 出力は sales-enriched.csv。結合タイプを明示 が必須です。書かないと Claude Code は 内部結合(マスターに無い行は捨てる) を選ぶことがあり、売上データが勝手に減る 事故の元になります。
複合キー結合
「商品コード × 地域コード」のような複合キーも頻出です。
> sales.csv に price-master.csv を複合キーで結合して。
> キー: (商品コード, 地域コード) のペア
> 一致しない行は「単価」列を NULL のまま残し、unmatched-key.csv に記録。結合前のサニティチェック
キーの分布 を本処理前に確認させると、結合事故を 9 割防げます。
> 結合前に以下のサニティチェックを実行して停止して:
> 1. sales 側の商品コードのユニーク件数と、欠損行数
> 2. master 側の商品コードのユニーク件数と、重複行数
> 3. sales にあって master に無いキーのサンプル 10 件
> 4. master の重複行(同じキーで複数行)のサンプル 10 件
> 問題なければ「OK」、問題あれば 1 行で要約してから停止。停止して と書くのが重要。Claude Code は止めないと突っ走る ことがあるので、明示的にチェックポイントを挿入します。
マスターの重複行 はほぼ確実にどこかにあります。「同じ商品コードで原価が違う 2 行」のような汚れがあると、結合後に行数が爆発(行数膨張 )。1,000 行が 3,500 行になる、というのはこの罠が原因です。
パターン 2 — ピボットテーブル相当のクロス集計
加工パターンの 2 つ目、ピボット集計 です。
基本プロンプト
> sales-q1.csv をピボット集計して。
> 行: 月(2026-01 / 02 / 03)
> 列: カテゴリ(飲料 / 食品 / 雑貨 / 衣料)
> 値: 売上の合計
> 合計行・合計列を追加。数値はカンマ区切り、右寄せ。
> 出力は pivot-monthly-category.csv。「行」「列」「値」 の 3 つを明示するのが最低条件。書かないと Claude Code は「いい感じに」集計してしまい、毎回違うレイアウトになります。
複数の値を同時集計
「合計だけでなく件数も平均も欲しい」も頻出。
> 月 × カテゴリのクロス集計で、値は 3 つ:
> 1. 売上合計 2. 件数 3. 平均単価(売上 ÷ 件数)
> それぞれ別シートに出力。1 ファイル pivot-multi.xlsx に 3 シート構成で。値ごとにシートを分ける と、Excel で開いたあとの視認性が圧倒的に上がります。
行・列を 2 階層にする
「四半期 → 月」のように、行や列を 2 階層にしたいケース。
> 行: 四半期 → 月 の 2 階層
> 列: 部門 → 担当者 の 2 階層
> 値: 売上合計
> 各階層に小計を入れて、最終行・列に総計を入れて。Excel のピボットでも地味に難しい 小計位置 を、Claude Code は 階層を箇条書きで並べるだけ で正しく入れてくれます。
ピボット集計の鉄則
「行・列・値・小計・並び順」の 5 つを必ず明示。
- 行 — 何を縦に並べるか
- 列 — 何を横に並べるか
- 値 — 何を計算するか(合計 / 平均 / 件数 / 比率)
- 小計 — どの階層で小計を入れるか
- 並び順 — 行・列の並び順(値の降順 / 名前順 / カスタム順)
この 5 つを揃えれば、1 発で意図通りの出力 が返ります。
パターン 3 — 条件付き集計(売上 TOP10・スコアリング)
加工パターンの 3 つ目、条件付き集計。「全件の集計」ではなく、ビジネス的な意味を持たせた集計です。
TOP N 抽出
> sales-q1.csv から商品別売上ランキングを作って。
> 集計: 商品名ごとに売上合計、ソート: 降順、抽出: 上位 10 件
> 出力列: 順位 / 商品名 / 売上合計 / 件数 / 平均単価 / 全体比率(%)
> 合計が同じ商品は件数の多い順を 2 番目のキーに。同点処理を明示 が大事。書かないとランダムな順序で並び、月次レポートで「先月 5 位の商品が今月 8 位、でも数字は同じ」のような迷い事象が起きます。
条件フィルタ集計
> customers.csv から以下の条件で県別の顧客数を集計して。
> 条件: 累計購入額 >= 100 万円 AND 最終購入日が過去 1 年以内 AND 解約フラグ = 0
> 集計軸: 都道府県
> 値: 件数、累計購入額の合計、累計購入額の平均
> 出力: top-customers-by-pref.csv(件数の降順)フィルタを最初に書く と、Claude Code は フィルタ → 集計 → ソート の正しい順序で処理します。
重み付けスコア
「金額 × 確度 × 鮮度」 のような 自然言語のスコア式 を、自然言語のままで指示できるのが Claude Code 最大の強みです。
> deals.csv から「重点案件スコア」を計算して。
> スコア式: 金額 × (確度 / 100) × 鮮度係数
> 鮮度係数:
> 7 日以内 → 1.0 / 8〜14 日 → 0.8 / 15〜30 日 → 0.5 / 31 日以上 → 0.2
> Closed Won / Closed Lost は除外。
> スコア降順で上位 20 件を priority-deals.csv に出力。
> スコア計算の根拠(金額・確度・鮮度の値)も全部列として残して。計算根拠を列に残す のは超重要。「なんで A 案件が 1 位なの?」 と聞かれたときエビデンスを出せるかどうかで、レポートの信頼度が変わります。
スコア式を自然言語で書ける のが Claude Code の真骨頂。営業部のルールが変わった瞬間にスコア式を書き換えられる柔軟性が手に入ります。スコア式は 組織のロジックそのもの なので、prompts/score-priority.md などに置けば、レポートのバージョン管理 = ロジックのバージョン管理になります。
パターン 4 — 重複削除 / 表記揺れ統一
加工パターンの 4 つ目、名寄せ。Excel の「重複の削除」ボタンでは絶対に解決しない領域です。
自信度付き名寄せ
株式会社ABC と (株)ABC と ABC株式会社 を同じ会社と判定する作業。「絶対同じ会社」と「たぶん同じ会社」を分けるのが 半自動化思考 です。
> customers.csv の「会社名」列で重複候補を検出して。
> 正規化ルール:
> - 全角→半角、半角カナ→全角カナ、英大文字→小文字
> - 「株式会社」「(株)」「㈱」「Co., Ltd.」を除去、スペース全削除
> 自信度 3 段階:
> High: 正規化後完全一致 + 住所 or 電話も一致 → merge-auto.csv(自動マージ可)
> Mid: 正規化後完全一致 のみ → merge-review.csv(人間確認推奨)
> Low: 類似度 0.85 以上 → merge-suspect.csv(要慎重判断)
> 自動マージはせず、検出のみ。マッピング表 name-map.csv も出力。自動マージしない が鉄則。「自動で名寄せした結果、別会社が同一視されていた」事故は、後から復元できません。
名寄せの 3 原則
- 検出と統合を分ける。検出は AI、統合は人間が承認
- 自信度を付ける。High / Mid / Low で出力ファイルを 3 分割
- マッピング表を残す。「元の値 → 正規化後」をいつでも逆引きできる状態に
.xlsx 直接 vs CSV 経由 — 加工フェーズは CSV 推奨
基本は CSV 経由、理由は 4 つあります。
1. 加工は「データの形を変える」作業。書式・関数・グラフは加工の障害物にしかなりません。 2. 加工は「複数ファイル」を扱う。.xlsx を openpyxl で同時に開くとメモリも速度も 10 倍。CSV ならミリ秒。 3. 加工は「途中で止めて中身を見たい」作業。CSV ならテキストエディタで diff を取れます。 4. 加工は「再現性が命」。CSV はビット単位で同じ出力が再現可能。.xlsx は openpyxl のバージョンでバイト列が変わります。
推奨フロー
「入口と出口だけ .xlsx、中身は全部 CSV」 が加工フェーズの黄金パターンです。
> Step 1: 全加工を CSV ベースで実行(sales-merged.csv → sales-aggregated.csv → top10.csv)
> Step 2: 最後に report.xlsx を 3 シート構成で生成
> - data シート: sales-merged.csv の内容
> - pivot シート: sales-aggregated.csv(罫線・ヘッダー背景色 #0AA5D4 付き)
> - top10 シート: top10.csv(1 位は太字赤)
> 中間 CSV は途中経過の確認用に残しておく。中間 CSV を残す のがコツ。最終 .xlsx だけだとレビュー時に「この数字どうやって出した?」を再現できません。
失敗パターン — 数値型崩壊 / 文字化け / マクロ干渉
加工フェーズで踏みやすい地雷 3 つ。どれもプロンプト 1 行で防げます。
失敗 1 — 数値型崩壊
- 商品コード
001234が1234になり結合キーがズレる - 電話番号
09012345678が9.01E+09化 - 金額
"1,200"がカンマ込み文字列のまま、SUM が文字列連結に - 日付
2026-04-01が2026/4/1に変わり期間フィルタが効かない
防御の 1 行は次の通りです。
> 読み込み時の型指定:
> - 商品コード / 電話番号 / 郵便番号 / 顧客 ID: 文字列型
> - 金額 / 数量 / 単価: 数値型(カンマや「円」を除去してから変換)
> - 日付: ISO 8601(YYYY-MM-DD)に統一失敗 2 — 文字化け。日本語 Excel 環境は Shift_JIS / UTF-8 / CP932 のトリオ が常に文字化けの原因。
> 文字コード:
> - 入力は chardet で自動判定
> - 内部処理は UTF-8 で統一
> - 出力 CSV は UTF-8 BOM 付き(Excel でダブルクリックして文字化けしない形式)UTF-8 BOM 付き がコア。これだけで「CSV を開いたら文字化けしてる」と泣くことが消えます。
失敗 3 — マクロ干渉。.xlsm を openpyxl で開いて保存すると マクロが消滅。条件付き書式やピボットテーブルも壊れます。
> 入力が .xlsm の場合:
> 1. データシートだけ CSV に書き出して処理(.xlsm 本体は触らない)
> 2. 出力は .csv または新規の .xlsx に
> 3. 元の .xlsm ファイルは絶対に上書きしない| 失敗 | 1 行の防御策 |
|---|---|
| 数値型崩壊 | 「コードは文字列、金額は数値、日付は ISO」 |
| 文字化け | 「入力 chardet 自動判定、出力 UTF-8 BOM 付き」 |
| マクロ干渉 | 「.xlsm は触らず、データだけ CSV に書き出して処理」 |
これら 3 行を ==prompts/ 全テンプレに最初から入れておく と、加工フェーズの事故が 9 割消えます==。
プロンプトテンプレート集 — そのままコピペで使える 4 本
テンプレ 1 — 結合(VLOOKUP 相当)
> {sales.csv} に {master.csv} の情報を結合して。
> キー: {キー列名} 結合タイプ: 左外部結合({sales} 側は全部残す)
> 取得列: {col1}, {col2}, {col3}
> マスターに無い行: {default} を入れ、unmatched.csv に記録
> サニティチェック: キーのユニーク件数 / 欠損 / 重複を本処理前に表示
> 出力: {output.csv} 共通ルール: 型指定 / UTF-8 BOM / 元ファイル保護テンプレ 2 — ピボット(クロス集計)
> {input.csv} をピボット集計して。
> 行: {row_axis} 列: {col_axis} 値: {value_col} の {合計 / 平均 / 件数}
> 階層: {親 / 子} 小計: {位置} 並び順: {row 順 / col 順}
> 合計行・合計列を追加
> 出力: {output.csv}(または .xlsx で罫線とヘッダー色 #0AA5D4)テンプレ 3 — 条件付き集計(TOP N / スコア)
> {input.csv} から {目的} を出して。
> フィルタ: {条件 1 AND 条件 2}
> スコア式: {自然言語で書く}
> ソート: スコア降順、同点時の第 2 キー: {col} 抽出: 上位 {N} 件
> 出力列: 順位 / ID / スコア / 計算根拠 / 主要属性
> 共通ルール: 計算根拠を全部列として残すテンプレ 4 — 名寄せ(自信度付き重複検出)
> {input.csv} の {key_col} で重複候補を検出して。
> 正規化ルール: {全角→半角・法人格除去・大小統一}
> 自信度:
> High: 正規化後完全一致 + 追加条件 → merge-auto.csv
> Mid: 正規化後完全一致 のみ → merge-review.csv
> Low: 類似度 {閾値} 以上 → merge-suspect.csv
> 自動マージはせず、検出のみ。マッピング表 name-map.csv も出力。==4 本のテンプレを prompts/ ディレクトリに保存 しておくと、来月の業務で「prompts/pivot.md の手順で 5 月分やって==」の 1 行で再利用できます。
まとめ
このレッスンで押さえてほしいポイントを 7 つ 並べます。
- 「整理」と「加工」は別物。整理は揃える、加工は結合・集約・ランキング
- 加工パターンは 4 つ — 結合 / ピボット / 条件付き集計 / 名寄せ
- 結合 は「結合タイプ」と「複合キー」を明示、サニティチェックを本処理前に実行
- ピボット は「行・列・値・小計・並び順」の 5 つを必ず指示
- 条件付き集計 は「フィルタ → 集計 → ソート」の順、スコア計算根拠を列に残す
- 名寄せ は検出と統合を分ける、自信度 High / Mid / Low で出力ファイルを 3 分割
- 失敗 3 大事故(数値型崩壊・文字化け・マクロ干渉)は プロンプト 1 行で全部防げる
章末演習 — 自分の業務で実際に手を動かしてみましょう。所要時間 20〜30 分。
- 業務データ(販売 / 顧客 / 案件)とマスター(商品 / 顧客 / 担当者)を 1 セット用意。テンプレ 1(結合)で 1 本走らせる
- その結合結果から、テンプレ 2(ピボット)で月 × 軸 のクロス集計を作る
- テンプレ 3(条件付き集計)で、業務に合うスコア式を 1 つ書き、上位 10 件を抽出
- 出力した 3 ファイルを 同僚 1 人に見せる。「これどうやった?」と聞かれたら、それが プロンプト共有のきっかけ
<Quiz question="Excel の加工フェーズで、Claude Code に渡すときの基本動線として最も事故が少ないのはどれ?" options={[".xlsx を直接 openpyxl で読み書きして、結果も同じ .xlsx に上書き保存させる","入口と出口だけ .xlsx、中間処理は全部 CSV ベースで実行する","毎回 Google スプレッドシートに変換してから処理する"]} answer={1} />
<Quiz question="VLOOKUP 相当の結合を Claude Code に依頼するとき、最も事故を防げる指示はどれ?" options={["「いい感じに 2 ファイルを結合して」","「結合タイプ・キー列・マスターに無い行の扱いを明示し、本処理前にキーのユニーク件数を表示する」","「Excel の VLOOKUP 関数を使って結合する VBA マクロを書いて」"]} answer={1} />
<Quiz question="名寄せ(重複削除・表記揺れ統一)で最も安全な運用は?" options={["正規化ルールを書いて、AI に全自動でマージさせる","検出だけ AI に任せ、自信度 High / Mid / Low の 3 段階で出力ファイルを分け、統合は人間が承認する","「重複削除」ボタンで Excel に任せる"]} answer={1} />
次のレッスン 4-3: メール一括作成 では、加工した顧客リストから差し込みメールを一括生成する手順を学びます。このレッスンで加工した顧客リストをそのまま渡せる 設計なので、4-2 → 4-3 を続けて回すと、データ加工 → メール送付のラインが一気通貫で組み上がります。