---
title: "Excel作業をAIで自動化する手順【Claude Code・VBA不要】"
description: "Excelの繰り返し集計をClaude Codeで自動化する手順を、非エンジニア向けに解説。日本語の依頼文、架空データの答え合わせ、数式・上書きの注意点、スクリプトの再実行と定期実行まで扱います。"
url: "https://shiftb.dev/articles/excel-automation-claude-code"
publishedAt: "2026-09-20"
updatedAt: "2026-09-20"
author: "立川修平（ぶべ）"
category: "ai-development"
tags: ["Claude Code", "Excel", "業務自動化", "非エンジニア"]
---

# Excel作業をAIで自動化する手順【Claude Code・VBA不要】

拠点別のExcelを開いて行をコピーし、取消分を除き、担当者別に集計する。先週と同じ作業なのに、数字が合わず元の表へ戻る。僕が開発・運営するVibelyも、出発点はShiftBの社内ツールでした。教材管理、受講生のブログ投稿、進捗管理から始め、社内で使ってから外部向けのサービスにしています。

Excel作業のAI自動化も、身近な繰り返しを小さく切り出すところから始められます。この記事ではClaude Codeに日本語で条件を伝え、集計用のプログラムを作り、結果を照合して次回も実行するまでを扱います。VBAを自分で書く必要はありませんが、集計ルールと答え合わせは仕事を知る人が担います。

## 手順1：自動化するExcel作業を集計ひとつに絞る

### 集計・転記・体裁直しのうち、同じ条件で繰り返すものを選ぶ

最初の題材は「拠点ごとの売上表をまとめ、確定分だけを拠点別に合計する」です。取引先への送信や会社の台帳更新まで含めると、間違ったときに影響が広がります。まずは確認用の別ファイルができれば完成とします。毎回変わるのは入力ファイルだけで、除外条件や出力先は同じ。その境界を決めると、繰り返し作業をプログラムとして残せます。

Claude Codeはファイルの読み取り・編集やコマンド実行ができるツールです（[公式の概要](https://code.claude.com/docs/en/overview)）。今回はPythonというプログラミング言語と、Excelファイルを扱う部品のopenpyxlを使う方針にします。AIに処理を作ってもらい、できたプログラムで毎回同じ計算をする構成です。

すでにExcelの機能で安定して集計できているなら、その仕組みを残して構いません。自作の候補は、ファイルを開き直して同じ転記をするなど、手順が決まっているのに人の操作が残る部分です。題材から迷う場合は[非エンジニアが業務アプリを作る手順](https://shiftb.dev/articles/claude-code-business-app-non-engineer)で、仕事の切り出し方を確認できます。

### 本物の売上表を渡す前に、架空データで形を合わせる

空の作業フォルダを作り、その中に入力用の`input`と出力用の`output`を用意します。元の業務ファイルは入れず、列名だけ同じ架空の表を使います。今回の入力はマクロなしの`.xlsx`、シート名は「売上」、列は「伝票ID・拠点・金額・状態」です。金額は円の整数、状態は「確定」「取消」のみと決めます。

最初のつまずきは、表の見た目からルールを推測させることです。赤字の行は除外するのか、非表示の行も対象なのか。今回の練習では色や非表示に意味を持たせず、すべてのデータ行を状態列で判定します。社内データを扱う段階では利用規程と契約・設定を確認してください。手元のファイルを処理することと、その内容がAIサービスへ送られないことは別です（[公式のデータ利用説明](https://code.claude.com/docs/en/data-usage)）。

![入力のコピーを決めたルールで集計し、別ファイルへ出力して人が合計を照合する。確認できた処理を次回も実行し、元ファイルは残す](https://shiftb.dev/images/articles/excel-automation-claude-code-flow.png)

## 手順2：入力・除外条件・出力を日本語で伝える

### 「うまく集計して」を、答え合わせできる依頼に変える

悪い依頼は「このExcelをいい感じに集計して」です。取消行の扱い、重複伝票、税込か税抜かが決まっていません。良い依頼では、入力する表と計算条件、出力するもの、異常な値に出会ったときの動きを書きます。要件とは、プログラムに満たしてほしい条件のこと。難しい書式より、普段の仕事で判断していることを言葉にします。

```
input内の売上表を拠点別に集計したいです。まず実装せず計画を説明してください。
入力：直下の.xlsxだけ。Excelの一時ファイル（~$で始まるもの）は除外。
シート：売上。列は伝票ID、拠点、金額、状態。完全な空行は無視。
伝票IDは文字列で扱い、先頭の0を残す。全ファイルを通して重複はエラー。
金額は円の0以上の整数。文字の金額、数式、空欄はエラー。
状態は確定か取消だけ。確定行の金額を拠点別に合計し、取消行は除外。
必須列不足、IDや拠点の空欄、未知の状態があれば、ファイル名と行番号を出して停止。
正常時だけoutputに新しいExcelを作る。入力の上書きと外部通信はしない。
出力は拠点別合計、総合計、読込・採用・除外の件数。
私のOSで必要な準備と、確認する項目も説明してください。
```

この指定なら「取消は捨ててよい」「空欄はゼロとしてよい」とAIが補う余地を減らせます。取消行にも伝票IDの重複や金額の異常があれば停止する設計です。エラーの行を黙って飛ばすと、出力はできても合計の不足に気づけません。返ってきた計画は、普段の手作業と照らし合わせて読んでください。

### 完成条件を先に決め、途中で機能を増やさない

確認するのは、入力が指定フォルダだけか、取消が集計から外れるか、元ファイルが残るか、異常時に正常な結果を作らないかです。グラフや帳票の装飾を追加したくなっても、まずこの条件で通します。僕がVibelyでも出発点にしたのは、社内で必要な機能を形にする進め方でした。Excelでも「この集計ができれば次へ進める」という範囲から始めるのが僕の勧めです。

仕事のルールを書き出すと、「どこまで自動化してよいか」「例外をどう扱うか」で判断が止まることがあります。AIシフトコースでは、今の業務を題材に、作る範囲や学ぶ順番を相談できます。コードを書く前の整理から取り組みたい人は、相談会で扱いたい作業を伝えてください。

## 手順3：Claude Codeで集計スクリプトを作る

### 動いた処理を、次回も使えるファイルに残す

Claude Codeをまだ使っていない場合は[インストールからの使い方](https://shiftb.dev/articles/how-to-use-claude-code)を先に確認します。準備済みなら、作業フォルダを開いて先ほどの依頼を送り、計画の確認後に実装を頼みます。計画段階ではPlanモードを使えます。公式の[権限設定](https://code.claude.com/docs/en/permissions)に沿って、編集・実行が必要になった時点で許可内容を確かめてください。

```
確認した条件でaggregate.pyを作ってください。
Pythonとopenpyxlを使い、初回セットアップは私のOSに合わせて案内してください。
依存パッケージは作業用の仮想環境に入れ、使用版をrequirements.txtに記録。
入力は読み取り専用、出力は新しいブック。既存の出力と同名なら停止。
出力途中に失敗したファイルが正常結果に見えないようにしてください。
見出しを太字にし、金額は桁区切り、列幅は内容を読める幅にします。
確認用の架空Excel、テスト、操作説明のREADME.mdも作ってください。
毎回AIに集計させず、このプログラム単体で再実行できるようにしてください。
```

スクリプトは、処理の手順を書いたプログラムファイルです。仮想環境は、この作業で使うPythonの部品をほかの作業と分ける仕組み。READMEは操作説明書です。画面に許可を求める表示が出たら、何を入れるのか、どのファイルを変更するのかを見ます。「外部通信しない」という文章だけで通信が技術的に遮断されるわけではありません。

### 数式の再計算と、元ブックの完全な再現を期待しない

openpyxlはExcelファイルを読み書きできますが、[数式そのものは計算しません](https://openpyxl.readthedocs.io/en/stable/simple_formulae.html)。`data_only`という読み取り設定も、Excelが以前に保存した計算結果を読むもので、最新の再計算を保証する機能ではありません（[公式チュートリアル](https://openpyxl.readthedocs.io/en/stable/tutorial.html#loading-from-a-file)）。今回、金額の数式をエラーにするのはそのためです。

既存の図形など、開いて保存するだけでは保てない要素もあります。マクロ付きの帳票をそのまま置き換えず、必要な値から新しい集計ブックを作る範囲に留めます。また、[保存処理は既存ファイルを警告なく上書きし得る](https://openpyxl.readthedocs.io/en/stable/tutorial.html#saving-to-a-file)ため、別名保存と同名チェックを処理側に入れます。実行後は、入力の更新日時や内容が変わっていないことも確かめます。

## 手順4：合計とエラーを確かめてから使う

### 少量の架空データで、正解を自分でも計算する

以下はこの記事用の架空データです。前半と後半を別ファイルに分け、同じ「売上」シートと列名で保存する練習を想定しています。伝票IDは文字列として入力してください。実際の売上や時短実績を示す数字ではありません。

| 伝票ID | 拠点 | 金額（円） | 状態 |
| --- | --- | --- | --- |
| 001 | 東 | 12,000 | 確定 |
| 002 | 西 | 8,000 | 確定 |
| 003 | 東 | 3,000 | 取消 |
| 004 | 東 | 5,000 | 確定 |
| 005 | 西 | 0 | 確定 |
| 006 | 西 | 2,000 | 確定 |

正解は東が17,000円、西が10,000円、合計27,000円です。読込6件、採用5件、除外1件になり、金額ゼロの行も採用件数に含まれます。合計だけ合っていても、件数が違えば処理を調べてください。たとえば、ゼロの行を空欄と同じ扱いにしても合計は変わりません。件数と金額を別々に見ることで、この取りこぼしを見つけられます。

[Claude Codeの公式ベストプラクティス](https://code.claude.com/docs/en/best-practices)でも、正誤を判定できる検証条件を与えることが重視されています。「動いた」という返答で終えず、出力ブックを開き、期待する金額と件数を自分で見ます。体裁はその後に確認します。

### わざと壊した入力で、止まることも確かめる

正常なサンプルを残したうえで、コピーに変更を加えます。別ファイルの伝票IDを同じにする、金額を空欄にする、状態を「確認中」にする、列名を変える。それぞれ単独で試し、異常なファイル名と行番号が示され、今回の正常出力が作られないことを確認します。完全な空行は無視されても、途中だけ空欄の行は検知される必要があります。

修正を頼むときは「合わない」だけでなく、入力、期待する結果、実際の結果を渡します。たとえば「005の金額は0、状態は確定です。採用5件のはずが4件です。ゼロと空欄を分け、元の正常例も再検証してください」。コード全体を読めなくても、直したい振る舞いは具体的に伝えられます。ただし、出力を確認できない処理まで任せられるという意味ではありません。

正常な入力と壊れた入力の両方を確認できると、自分の集計ルールを変更したときにも検証をやり直せます。次に必要なのは、エラーの理由を読み、修正後の影響を見分ける基礎です。AIシフトコースで、試作品を仕事で使える形へ育てる学び方を相談できます。

## 手順5：再実行できる形にして定期実行へ進む

### 会話を閉じても、同じ手順で集計できるようにする

次回は新しい対象期間の入力だけを置き、確認済みのスクリプトを実行します。過去のファイルが同じ入力フォルダに残ると、別期間の売上まで合計してしまいます。読み込んだファイルの一覧、対象期間、実行日時、件数、出力先をログとして残すよう頼んでください。ログは処理の記録です。今回の期間は入力を揃える人が管理し、プログラムが日付から自動判定する仕様にはしていません。

READMEには、入力を置く場所、列の条件、実行方法、エラー時の対応、正常出力の確認方法を残します。実行場所によって参照先が変わらないよう、スクリプトを基準に入出力先を決めることも依頼します。前回の成功ファイルを今日の結果と取り違えないよう、エラー時も今回の成否が分かる記録が必要です。新しい入力でも同じ条件が通ることを、手動実行で確認します。

### 定期実行は、停止・失敗・二重実行の扱いまで決める

手動で再実行できたら、Windowsならタスクスケジューラ、macOSならlaunchdというOSの仕組みで、決まった時刻にプログラムを起動できます（[Microsoftの公式資料](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks-create)、[Appleの公式資料](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html)）。設定方法はOSに合わせてClaude Codeに説明してもらいます。定期実行するのは、検証済みの集計プログラムです。

```
この集計を私のOSで定期実行する設定案を作ってください。まだ登録はしないでください。
実行するPythonとスクリプトは絶対パスで指定してください。
入力未到着時は成功扱いにせず、前回の出力を再利用しないこと。
処理が重なったら後からの実行を止め、成功・失敗をログに残してください。
PCが停止・スリープしていた場合の動きと、設定の停止・削除方法も説明してください。
手動起動で結果を確認してから、時刻指定を有効にします。
```

PCが動いていない時間にも必ず処理したい場合は、実行場所を別に用意する検討が必要です。担当者と失敗時の確認方法が決まるまでは、手動起動で構いません。別の自動化題材として[Instagram投稿の自動化](https://shiftb.dev/articles/instagram-automation-claude-code)もありますが、外部への投稿には送信先や公開内容の確認が加わります。Excelで入力・処理・出力の関係をつかんだら、次は自分の業務の例外処理をひとつずつ増やしてください。
