Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excelグラフ作成

Python Python
スポンサーリンク

Excelグラフ作成は「データを“見える化”し、説得力のある資料を自動生成する」ための最強スキル

Excel業務自動化の中でも、グラフ作成の自動化は効果が非常に大きいです。
なぜなら、実務では次のような場面が多いからです。

  • 売上推移を自動でグラフ化したい
  • 月次レポートを毎回同じフォーマットで作りたい
  • データ更新 → グラフ更新を自動化したい
  • 手作業でグラフを作る時間をゼロにしたい

Python(openpyxl)を使えば、棒グラフ・折れ線・円グラフなどをExcelに直接描画できます。
初心者でも理解しやすいように、基本から実務テンプレまで丁寧に解説します。


グラフ作成の基本構造(最重要ポイント)

グラフ作成は必ず3ステップで構成される

  1. Reference:グラフに使うセル範囲を指定
  2. Chart:グラフ本体を作成
  3. add_data / set_categories:データとラベルを設定し、シートに配置

この3つを理解すれば、どんなグラフでも作れます。


棒グラフ(BarChart)の基本

データ → 棒グラフを作成する最小コード

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

# データ作成
data = [
    ["項目", "値"],
    ["A", 20],
    ["B", 30],
    ["C", 50],
    ["D", 40],
]
for row in data:
    ws.append(row)

# 値の範囲(B2〜B5)
values = Reference(ws, min_col=2, min_row=2, max_row=5)

# グラフ作成
chart = BarChart()
chart.title = "サンプル棒グラフ"

# データ追加
chart.add_data(values)

# シートに配置
ws.add_chart(chart, "E2")

wb.save("bar_chart.xlsx")
Python

深掘りポイント

  • Reference がグラフ作成の最重要要素
  • add_chart(chart, "E2") でグラフの左上位置を指定
  • 棒グラフは「比較」を見せるのに最適

折れ線グラフ(LineChart)

折れ線グラフの例

from openpyxl.chart import LineChart, Reference

chart = LineChart()
chart.title = "折れ線グラフ"

values = Reference(ws, min_col=2, min_row=2, max_row=5)
chart.add_data(values)

ws.add_chart(chart, "E15")
Python

深掘りポイント

  • 折れ線は「推移」を見せるのに最適
  • 棒グラフと使い方はほぼ同じ

円グラフ(PieChart)

円グラフの例

from openpyxl.chart import PieChart, Reference

chart = PieChart()
chart.title = "円グラフ"

labels = Reference(ws, min_col=1, min_row=2, max_row=5)
values = Reference(ws, min_col=2, min_row=2, max_row=5)

chart.add_data(values, titles_from_data=False)
chart.set_categories(labels)

ws.add_chart(chart, "E25")
Python

深掘りポイント

  • 円グラフは set_categories() でラベルを指定する必要がある
  • 割合の可視化に最適

実務テンプレ①:売上推移グラフを自動生成

月次売上(A列:月、B列:売上)を折れ線グラフ化

from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference

wb = load_workbook("sales.xlsx")
ws = wb["売上"]

chart = LineChart()
chart.title = "売上推移"

values = Reference(ws, min_col=2, min_row=1, max_row=13)
labels = Reference(ws, min_col=1, min_row=2, max_row=13)

chart.add_data(values, titles_from_data=True)
chart.set_categories(labels)

ws.add_chart(chart, "D2")

wb.save("sales_report.xlsx")
Python

深掘りポイント

  • 月次レポートで最も使われるパターン
  • titles_from_data=True で1行目を系列名として扱う

実務テンプレ②:複数系列の棒グラフ(前年比比較)

今年と去年の売上を比較する棒グラフ

from openpyxl.chart import BarChart, Reference

chart = BarChart()
chart.type = "col"
chart.title = "前年比比較"

values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=13)
chart.add_data(values, titles_from_data=True)

labels = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.set_categories(labels)

ws.add_chart(chart, "F2")
Python

深掘りポイント

  • min_col〜max_col を広げると複数系列をまとめて追加できる
  • 前年・今年の比較グラフに最適

実務テンプレ③:グラフ専用シート(Chartsheet)に出力

グラフだけを大きく表示したい場合

chart_sheet = wb.create_chartsheet()
chart_sheet.add_chart(chart)

wb.save("chart_sheet.xlsx")
Python

深掘りポイント

  • プレゼン資料向けに便利
  • グラフを大きく見せたいときに最適

実務テンプレ④:データ更新 → グラフ更新を自動化

データを書き換えてグラフを再保存

ws["B5"].value = 999  # データ更新
wb.save("updated_chart.xlsx")
Python

深掘りポイント

  • グラフはセル参照なので、データ更新だけで自動反映
  • 「毎月データ更新 → グラフ自動更新」が簡単に実現

Excelグラフ作成を業務で設計するときの視点

  • Reference → Chart → add_data の3ステップが最重要
  • 棒グラフ=比較、折れ線=推移、円グラフ=割合
  • 複数系列は min_col〜max_col を広げるだけ
  • グラフ専用シートで見やすい資料が作れる
  • データ更新だけでグラフが自動反映される

タイトルとURLをコピーしました