Excel集計表作成は「大量データを“意味のある形”にまとめ、レポートを自動生成する」ための最強スキル
Excel業務自動化の中でも 集計表の自動生成 は効果が非常に大きいです。
なぜなら、実務では次のような作業が毎日のように発生するからです。
- 売上データを商品別・担当者別に集計したい
- 日次データを月次にまとめたい
- 大量データを Excel の表形式に整形したい
- 毎回同じ集計表を作るのが面倒
Python(openpyxl + pandas)を使えば、
集計 → 整形 → Excel出力 を完全自動化できます。
初心者でも理解しやすいように、
「openpyxlでの基本操作 → pandasでの実務集計 → Excel整形」
の順で丁寧に解説します。
集計表作成の基本構造(最重要ポイント)
集計表は次の3ステップで作る
- データを読み込む(Excel → Python)
- 集計処理を行う(pandas)
- 集計結果を Excel に書き込む(openpyxl)
この流れを理解すれば、どんな集計表でも作れます。
pandas を使った最も基本的な集計(sum)
商品別売上を集計する最小コード
import pandas as pd
df = pd.read_excel("sales.xlsx")
summary = df.groupby("商品")["売上"].sum()
summary.to_excel("summary.xlsx")
Python深掘りポイント
groupby("商品")で商品別にグループ化sum()で売上を合計- Excelの「集計表」と同じ動作
- pandas は Excel の集計より高速で正確
複数項目の集計(数量と売上を同時に集計)
summary = df.groupby("商品")[["数量", "売上"]].sum()
summary.to_excel("summary_multi.xlsx")
Python深掘りポイント
- Excelの「値フィールドを複数追加」と同じ
- 商品別の総数量・総売上が一瞬で出せる
行 × 列 のクロス集計(Excelのピボットと同じ)
商品 × 月 の売上集計表
df["月"] = df["日付"].dt.month
summary = pd.pivot_table(
df,
index="商品",
columns="月",
values="売上",
aggfunc="sum",
fill_value=0
)
summary.to_excel("summary_cross.xlsx")
Python深掘りポイント
pivot_table()は Excel のピボットと同じ- 行 × 列 のクロス集計が簡単
- 月次レポートで最も使われる
openpyxl を使って集計表を Excel に整形して書き込む
pandas で集計 → openpyxl で整形 → Excel保存
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill
df = pd.read_excel("sales.xlsx")
summary = df.groupby("商品")[["数量", "売上"]].sum()
wb = Workbook()
ws = wb.active
ws.title = "集計表"
# ヘッダー書き込み
ws["A1"].value = "商品"
ws["B1"].value = "数量"
ws["C1"].value = "売上"
# ヘッダー書式
header_font = Font(bold=True)
header_fill = PatternFill(fill_type="solid", fgColor="DDDDDD")
for cell in ws["1:1"]:
cell.font = header_font
cell.fill = header_fill
cell.alignment = Alignment(horizontal="center")
# データ書き込み
for r_idx, (product, row) in enumerate(summary.iterrows(), start=2):
ws.cell(row=r_idx, column=1, value=product)
ws.cell(row=r_idx, column=2, value=row["数量"])
ws.cell(row=r_idx, column=3, value=row["売上"])
# 列幅調整
ws.column_dimensions["A"].width = 20
ws.column_dimensions["B"].width = 12
ws.column_dimensions["C"].width = 12
wb.save("summary_formatted.xlsx")
Python深掘りポイント
- pandas で集計 → openpyxl で整形 が最強の組み合わせ
- ヘッダーの書式設定で見やすい集計表になる
- 列幅調整で読みやすさが大幅UP
例題①:店舗別売上集計表を自動生成
A列:店舗、B列:売上 のデータを集計
summary = df.groupby("店舗")["売上"].sum()
summary.to_excel("store_summary.xlsx")
Python解説
- 店舗別集計は実務で最も多い
- Excelの「小計」より高速で正確
例題②:担当者別 × 商品別 のクロス集計表
summary = pd.pivot_table(
df,
index="担当者",
columns="商品",
values="売上",
aggfunc="sum",
fill_value=0
)
summary.to_excel("staff_product_summary.xlsx")
Python解説
- 営業部門でよく使う集計
- 担当者ごとの得意商品が一目で分かる
例題③:月次売上集計表をテンプレートに書き込む
wb = load_workbook("template.xlsx")
ws = wb["集計"]
for r_idx, (month, value) in enumerate(summary.items(), start=2):
ws.cell(row=r_idx, column=1, value=month)
ws.cell(row=r_idx, column=2, value=value)
wb.save("monthly_report.xlsx")
Python解説
- テンプレートに書き込むことで「フォーマット付きレポート」が完成
- 毎月のレポート作成を完全自動化できる
Excel集計表作成を業務で設計するときの視点
- pandas の groupby と pivot_table が最強
- openpyxl で整形すると「見やすい集計表」が自動生成できる
- 月次・担当者別・商品別などの集計はすべて自動化可能
- テンプレートに書き込むと業務レポートが完全自動化
