Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel集計表作成

Python Python
スポンサーリンク

Excel集計表作成は「大量データを“意味のある形”にまとめ、レポートを自動生成する」ための最強スキル

Excel業務自動化の中でも 集計表の自動生成 は効果が非常に大きいです。
なぜなら、実務では次のような作業が毎日のように発生するからです。

  • 売上データを商品別・担当者別に集計したい
  • 日次データを月次にまとめたい
  • 大量データを Excel の表形式に整形したい
  • 毎回同じ集計表を作るのが面倒

Python(openpyxl + pandas)を使えば、
集計 → 整形 → Excel出力 を完全自動化できます。

初心者でも理解しやすいように、
「openpyxlでの基本操作 → pandasでの実務集計 → Excel整形」
の順で丁寧に解説します。


集計表作成の基本構造(最重要ポイント)

集計表は次の3ステップで作る

  1. データを読み込む(Excel → Python)
  2. 集計処理を行う(pandas)
  3. 集計結果を 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 で整形すると「見やすい集計表」が自動生成できる
  • 月次・担当者別・商品別などの集計はすべて自動化可能
  • テンプレートに書き込むと業務レポートが完全自動化

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