Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel週次レポート

Python Python
スポンサーリンク

Excel週次レポートは「毎週の集計・分析・グラフ作成を自動化し、作業時間をゼロにする」ための最強スキル

週次レポートの自動化は“最も費用対効果が高いExcel業務自動化” です。

毎週のルーティン作業は、Pythonで
集計 → KPI算出 → グラフ生成 → レイアウト → 保存
まで完全自動化できます。

初心者でも理解できるように、
実務でそのまま使えるテンプレート形式 で丁寧に解説します。


週次レポート自動化の全体像(最重要ポイント)

週次レポートは次の4つの要素で構成されます。

集計(pandas)

週番号ごとに売上やアクセス数を自動集計します。

KPI(重要指標)

当週売上、前週比、累計などを算出します。

グラフ(openpyxl.chart)

折れ線グラフや棒グラフを自動生成します。

レイアウト(openpyxl)

タイトル、罫線、列幅調整などを整えて「提出できるレポート」に仕上げます。

この4つを組み合わせることで、毎週のレポートが完全自動化されます。


週次売上レポートの基本テンプレート(最小構成)

週番号ごとに売上を集計してレポート化する例

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
from openpyxl.styles import Font, Alignment

df = pd.read_excel("sales.xlsx")
df["日付"] = pd.to_datetime(df["日付"])
df["週"] = df["日付"].dt.isocalendar().week

summary = df.groupby("週")["売上"].sum()

wb = Workbook()
ws = wb.active
ws.title = "週次レポート"

ws["A1"].value = "週次売上レポート"
ws["A1"].font = Font(size=16, bold=True)
ws.merge_cells("A1:D1")
ws["A1"].alignment = Alignment(horizontal="center")

ws["A3"].value = "週"
ws["B3"].value = "売上"

for i, (week, value) in enumerate(summary.items(), start=4):
    ws.cell(row=i, column=1, value=week)
    ws.cell(row=i, column=2, value=value)

ws["D3"].value = "当週売上"
ws["E3"].value = summary.iloc[-1]
ws["D3"].font = Font(bold=True)

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

values = Reference(ws, min_col=2, min_row=4, max_row=4 + len(summary) - 1)
labels = Reference(ws, min_col=1, min_row=4, max_row=4 + len(summary) - 1)

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

ws.add_chart(chart, "D6")

wb.save("weekly_report.xlsx")
Python

重要ポイントの深掘り

週次レポートでは「推移」が最重要なので、折れ線グラフが必須です。
タイトルを merge_cells で中央寄せにするとレポートらしさが一気に増します。
当週売上を右上に配置することで、視認性が大幅に向上します。


KPI(指標)を追加してレポートの質を劇的に上げる

当週売上・前週比・累計売上を自動計算

ws["D4"].value = "前週売上"
ws["E4"].value = summary.iloc[-2]

ws["D5"].value = "前週比"
ws["E5"].value = summary.iloc[-1] - summary.iloc[-2]

ws["D6"].value = "累計売上"
ws["E6"].value = summary.sum()

for cell in ["D3", "D4", "D5", "D6"]:
    ws[cell].font = Font(bold=True)
Python

深掘りポイント

週次レポートは「改善しているか」「悪化しているか」が最重要です。
前週比を入れることで、変化が一瞬で分かります。


商品別売上の棒グラフを追加してレポートを強化する

商品別売上を集計して棒グラフ化

product_summary = df.groupby("商品")["売上"].sum()

ws["A15"].value = "商品"
ws["B15"].value = "売上"

for i, (product, value) in enumerate(product_summary.items(), start=16):
    ws.cell(row=i, column=1, value=product)
    ws.cell(row=i, column=2, value=value)

from openpyxl.chart import BarChart

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

bar_values = Reference(ws, min_col=2, min_row=16, max_row=15 + len(product_summary))
bar_labels = Reference(ws, min_col=1, min_row=16, max_row=15 + len(product_summary))

bar.add_data(bar_values, titles_from_data=False)
bar.set_categories(bar_labels)

ws.add_chart(bar, "D15")
Python

深掘りポイント

棒グラフは「比較」に最適で、商品別の強弱が一目で分かります。
週次レポートに入れると、当週の売上構成が明確になります。


レイアウトを整えて「提出できるレポート」に仕上げる

列幅・罫線・フォント調整

ws.column_dimensions["A"].width = 12
ws.column_dimensions["B"].width = 12
ws.column_dimensions["D"].width = 15
ws.column_dimensions["E"].width = 15
Python

罫線を付けると帳票としての完成度が一気に上がります。

from openpyxl.styles import Border, Side

border = Border(
    left=Side(style="thin"),
    right=Side(style="thin"),
    top=Side(style="thin"),
    bottom=Side(style="thin")
)

for row in ws["A3:B" + str(4 + len(summary))]:
    for cell in row:
        cell.border = border
Python

深掘りポイント

レポートは「見た目」が非常に重要です。
罫線・列幅・フォントを整えるだけで、提出できる品質になります。


Excel週次レポート自動化の設計ポイント

週次レポートは次の構成にすると最も見やすくなります。

上部:KPI(当週売上・前週比・累計)

意思決定者が最初に見る部分です。

左側:週次売上表

データの根拠となる部分です。

右側:折れ線グラフ

推移を視覚的に理解できます。

下部:商品別売上の棒グラフ

当週の売上構成の分析に最適です。

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