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

Python Python
スポンサーリンク

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

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

  • 売上の比較をグラフ化したい
  • 月別データを棒グラフで見せたい
  • レポート作成を自動化したい
  • 手作業でグラフを作る時間をゼロにしたい

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


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

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

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

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


基本:棒グラフを作る最小コード

データ → 棒グラフを作成するシンプルな例

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") でグラフの左上位置を指定
  • 棒グラフは「比較」を見せるのに最適

ラベル(項目名)を付けた棒グラフ

A列をラベル、B列を値として棒グラフ化

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 = BarChart()
chart.title = "項目別データ"

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

ws.add_chart(chart, "E10")
Python

深掘りポイント

  • set_categories(labels) で棒グラフの横軸ラベルを設定
  • ラベルがあるとグラフの意味が一気に分かりやすくなる

複数系列の棒グラフ(前年比比較など)

今年と去年のデータをまとめて棒グラフ化

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

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

chart.add_data(values, titles_from_data=True)

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

ws.add_chart(chart, "E2")
Python

深掘りポイント

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

横棒グラフ(BarChart の方向変更)

横向きの棒グラフを作る

chart = BarChart()
chart.type = "bar"  # 横棒
chart.title = "横棒グラフ"

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

ws.add_chart(chart, "E20")
Python

深掘りポイント

  • type="bar" で横棒グラフ
  • 項目名が長い場合に見やすい

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

A列:商品名、B列:売上 の棒グラフを作る

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

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

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

chart = BarChart()
chart.title = "商品別売上"

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

ws.add_chart(chart, "D2")

wb.save("sales_report.xlsx")
Python

ポイント

  • 商品別売上の可視化は実務で最も多い
  • 20行までのデータを自動でグラフ化

実務テンプレ②:月次売上の棒グラフ(12ヶ月)

chart = BarChart()
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, "F2")
Python

ポイント

  • 月次レポート自動化に最適
  • 1行目を系列名として扱う

実務テンプレ③:グラフ専用シートに棒グラフを出力

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

wb.save("chart_only.xlsx")
Python

ポイント

  • グラフだけを大きく表示したいときに便利
  • プレゼン資料向け

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

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

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