
グラフ自動化で毎月の更新作業をゼロに
- Excelグラフの完全自動生成の完全自動化を実現するPythonスクリプトを5ステップで解説
- 「データ更新→グラフ手動作成の繰り返し」という課題を根本から解消する
- Claude Codeへの自然言語指示だけでスクリプトを生成できる
- 月・週・日単位の定期実行で完全無人化を実現する方法も紹介
以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。
Excelグラフの手動作成・更新は時間がかかります。Claude Code + openpyxl を使えば、データ更新と同時にグラフを自動再生成できます。
ステップ1:棒グラフを自動生成
import openpyxl
from openpyxl.chart import BarChart, Reference
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb.active
chart = BarChart()
chart.type = "col"
chart.title = "月別売上実績"
chart.y_axis.title = "金額(万円)"
chart.x_axis.title = "月"
chart.style = 10
chart.width = 20
chart.height = 12
data = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws_chart = wb.create_sheet("グラフ")
ws_chart.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("棒グラフ生成完了")
月別売上棒グラフを自動生成。毎月のグラフ更新作業(30分)がスクリプト実行3秒に。
ステップ2:折れ線グラフで推移を可視化
from openpyxl.chart import LineChart, Reference
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb.active
chart = LineChart()
chart.title = "売上推移(12ヶ月)"
chart.y_axis.title = "金額(万円)"
chart.style = 10
chart.width = 22; chart.height = 12
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.series[0].graphicalProperties.line.solidFill = "107C41"
chart.series[0].graphicalProperties.line.width = 20000
ws_chart = wb.create_sheet("折れ線グラフ")
ws_chart.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("折れ線グラフ追加完了")
ブランドカラー(緑)の折れ線グラフを自動生成。デザイン統一が自動化。
ステップ3:円グラフで構成比を可視化
from openpyxl.chart import PieChart, Reference
chart = PieChart()
chart.title = "部門別売上構成比"
chart.style = 10
chart.width = 15; chart.height = 12
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.dataLabels.showPercent = True
ws_pie = wb.create_sheet("円グラフ")
ws_pie.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("円グラフ追加完了")
構成比パーセント付き円グラフを自動生成。経営会議資料が即完成。
ステップ4:データ更新時にグラフを自動再生成
import openpyxl, requests
from openpyxl.chart import BarChart, Reference
# 最新データをAPIから取得してExcelを更新
resp = requests.get("https://api.example.com/sales/monthly")
monthly_data = resp.json()
wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["月別データ"]
for i, (month, value) in enumerate(monthly_data.items(), 2):
ws.cell(i, 1, month)
ws.cell(i, 2, value)
# グラフを再生成
for sheet in wb.sheetnames:
if "グラフ" in sheet:
del wb[sheet]
chart = BarChart()
chart.type = "col"; chart.title = "最新売上実績"
chart.width = 20; chart.height = 12
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws_c = wb.create_sheet("グラフ")
ws_c.add_chart(chart, "A1")
wb.save("売上データ_最新.xlsx")
print("データ更新+グラフ再生成完了")
APIから最新データを取得しExcel更新+グラフ再生成を自動化。毎月の更新作業がゼロに。
ステップ5:複数シートのグラフを一括スタイル統一
import openpyxl
wb = openpyxl.load_workbook("複数グラフ.xlsx")
STYLE = 10; WIDTH = 20; HEIGHT = 12
for ws in wb.worksheets:
for chart in ws._charts:
chart.style = STYLE
chart.width = WIDTH
chart.height = HEIGHT
if hasattr(chart, "y_axis"):
chart.y_axis.numFmt = '#,##0'
wb.save("複数グラフ_統一済.xlsx")
print(f"グラフスタイルを一括統一完了")
全シートのグラフスタイルを一括統一。デザインバラバラ問題が解消。
このシステムが解決する課題
データから適切なグラフを自動選択・生成。この自動化が特に効果的な場面と、解決できる課題を整理します。
- データが更新されるたびにグラフを手作業で作り直している
- グラフの種類(棒・折れ線・円など)の選択に迷い、毎回時間がかかる
- 色・フォント・タイトルなどのデザイン設定を毎回やり直している
- 複数のシートにある同種のデータを統合グラフにする方法がわからない
実務での活用シナリオ
導入前後の効果比較
データ更新のたびにグラフを削除→再作成→書式設定の繰り返し。グラフ1本あたり15〜30分かかり、複数シートにまたがるデータのグラフ化は特に困難だった。
openpyxlのChartオブジェクトでグラフを自動生成。データ系列・色・タイトル・軸ラベルをすべてコードで定義済みのため、再実行するだけで最新データのグラフが完成。
導入のポイントと注意事項
- グラフのデータ範囲はReference()で動的に設定することで、行数が変わっても自動的に全データを取得できる
- カラーパレットは10色以下に制限し、同系色の濃淡で統一感を出すと視認性が高まる
- 棒グラフのデータラベル表示はchart.plots[0].dLbls属性で制御できる(ただしopenpyxlの機能制限あり)
- グラフタイトルは動的に設定(例:f”{year}年{month}月 売上推移”)すると毎月の更新作業が不要になる
よくある質問(FAQ)
まとめ
✅ 棒・折れ線・円グラフを自動生成
✅ APIデータ更新+グラフ再生成を自動化
✅ 複数シートのグラフスタイルを一括統一
どんな現場で使われているか:活用シナリオ
実装で押さえるべき重要ポイント
- 1
openpyxlのチャート種類を目的で使い分ける:比較にはBarChart、推移にはLineChart、割合にはPieChart。Claude Codeに「目的を伝えてグラフ種類を選んでもらう」アプローチが効果的です。
- 2
グラフタイトル・軸ラベルを動的に生成:「2025年4月 カテゴリ別売上比較」のようなタイトルを変数から動的に生成することで、毎月同じスクリプトをそのまま使い回せます。
- 3
PNG出力とExcel埋め込みの二刀流:同じグラフをPNG保存とExcel埋め込みで両方出力することで、PPT貼り付け用とExcel資料用を一度の実行で用意できます。
ビジネスインパクト
この記事のまとめ
- ✅ Excelデータから棒・折れ線・円グラフを自動生成してExcelに埋め込める
- ✅ 複数パターンのグラフを一括生成してPowerPoint自動挿入まで連携できる
- ✅ 毎月1時間かかっていたグラフ作成がゼロになる
- ✅ データ更新のたびに自動でグラフが更新される仕組みを構築できる
よくある質問(FAQ)
関連記事