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

Python Python
スポンサーリンク

Excel売上集計は「バラバラな売上データを一瞬でまとめて、分析・レポートに使える形にする」ための最強スキル

あなたがやりたいことは、まさに「現場の数字を意思決定に使える形に変える」ことです。 その入口が 売上集計の自動化 です。

Python+Excelを組み合わせると、 日次・月次・商品別・店舗別・担当者別の売上を、 人が手で集計する前に、すでに「まとまった状態」で用意できます。

ここでは、初心者でもそのまま真似できる形で、 売上集計の基本〜応用までをテンプレート形式で解説します。

売上集計の基本テンプレート(まずはこれを押さえる)

売上データの前提(よくある列構成)

次のようなExcelを想定します。

  • 日付
  • 商品
  • 数量
  • 単価
  • 売上

売上列がない場合は、Python側で 数量 × 単価 から計算してもOKです。

Excelを読み込んで売上を計算する基本コード

import pandas as pd

df = pd.read_excel("sales.xlsx")

df["売上"] = df["数量"] * df["単価"]

df.to_excel("sales_with_amount.xlsx", index=False)
Python

ここでやっていることはシンプルですが、 「売上列を毎回Excelで計算している」現場なら、これだけでかなり楽になります。

商品別売上集計(最もよく使う軸)

商品別に売上を集計するコード

import pandas as pd

df = pd.read_excel("sales.xlsx")

df["売上"] = df["数量"] * df["単価"]

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

summary_product.to_excel("summary_product.xlsx")
Python

ここを深掘りする:groupby の意味

groupby("商品") は 「同じ商品名の行をひとまとめにして、そのグループごとに計算する」 という意味です。

そのあとに ["売上"].sum() と書くことで、 「商品ごとに売上を合計する」処理になります。

この形を覚えると、 商品別、店舗別、担当者別、エリア別など、 ほぼすべての「○○別集計」が同じパターンで書けるようになります。

月別売上集計(経営レポート・KPIで必須の軸)

日付から「月」を取り出して集計するコード

import pandas as pd

df = pd.read_excel("sales.xlsx")

df["日付"] = pd.to_datetime(df["日付"])
df["月"] = df["日付"].dt.to_period("M")

df["売上"] = df["数量"] * df["単価"]

summary_month = df.groupby("月")["売上"].sum()

summary_month.to_excel("summary_month.xlsx")
Python

ここを深掘りする:dt.to_period(“M”) の意味

df["日付"].dt.to_period("M") は 「2026-06-01」「2026-06-15」などの日付を 「2026-06」という“月単位の期間”に変換しています。

これを使うと、 日付がバラバラでも「同じ月のデータ」をひとまとめにできるので、 月次売上集計が非常に簡単になります。

商品×月の二軸売上集計(ピボットテーブル的な集計)

商品×月で売上を集計するコード

import pandas as pd

df = pd.read_excel("sales.xlsx")

df["日付"] = pd.to_datetime(df["日付"])
df["月"] = df["日付"].dt.to_period("M")
df["売上"] = df["数量"] * df["単価"]

pivot = pd.pivot_table(
    df,
    index="商品",
    columns="月",
    values="売上",
    aggfunc="sum",
    fill_value=0
)

pivot.to_excel("summary_product_month.xlsx")
Python

ここを深掘りする:pivot_table のイメージ

pivot_table は、Excelのピボットテーブルとほぼ同じイメージです。

  • 行方向(index)に「商品」
  • 列方向(columns)に「月」
  • 中身(values)に「売上」

という形で、 「商品×月」の売上表を一発で作ってくれます。

この形は、 「どの商品がどの月に強いか」 「季節性があるか」 などを分析するときに非常に強力です。

店舗別・担当者別売上集計(現場でよく求められる軸)

店舗別売上集計のコード

summary_store = df.groupby("店舗")["売上"].sum()
summary_store.to_excel("summary_store.xlsx")
Python

担当者別売上集計のコード

summary_staff = df.groupby("担当者")["売上"].sum()
summary_staff.to_excel("summary_staff.xlsx")
Python

ここでも使っているのは、 「groupby して sum する」という、 さっきの基本パターンとまったく同じです。

軸だけ変えれば、 どんな切り口でも売上集計ができるようになります。

集計結果を「見やすいExcel」に整形する

集計結果を複数シートにまとめて出力するコード

with pd.ExcelWriter("sales_report.xlsx") as writer:
    summary_product.to_excel(writer, sheet_name="商品別売上")
    summary_month.to_excel(writer, sheet_name="月別売上")
    summary_store.to_excel(writer, sheet_name="店舗別売上")
Python

このようにすると、 1つのExcelファイルの中に

  • 商品別売上
  • 月別売上
  • 店舗別売上

がそれぞれ別シートとしてまとまります。

レポートとして提出するときや、 社内共有用の「売上レポートブック」を作るときに非常に便利です。

集計+グラフまで自動化する(レポートとして完成させる)

月別売上の折れ線グラフを自動生成する例

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

summary_month.to_excel("summary_month.xlsx")

wb = load_workbook("summary_month.xlsx")
ws = wb.active

chart = LineChart()
chart.title = "月別売上推移"

values = Reference(ws, min_col=2, min_row=2, max_row=1 + len(summary_month))
labels = Reference(ws, min_col=1, min_row=2, max_row=1 + len(summary_month))

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

ws.add_chart(chart, "E2")

wb.save("summary_month_chart.xlsx")
Python

ここまで来ると、 「集計された数字」だけでなく、 「視覚的に売上の流れが分かるレポート」まで自動で作れるようになります。

売上集計を設計するときに、絶対に意識してほしいポイント

軸を先に決める

「何別で見たいのか」を先に決めると、 コードは自然とシンプルになります。

商品別、月別、店舗別、担当者別、 そしてその組み合わせ(商品×月、店舗×月など)。

列名と型をきれいにしてから集計する

集計の前に

  • 列名を統一する
  • 日付を datetime にする
  • 数量・単価・売上を数値型にする

この「前処理」をしておくと、 集計処理はほぼエラーなく、きれいに動きます。

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