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["日付"])
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, (date, value) in enumerate(summary.items(), start=4):
    ws.cell(row=i, column=1, value=date.strftime("%Y-%m-%d"))
    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("daily_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をコピーしました