Excel在庫集計は「入庫・出庫・在庫残を自動計算し、在庫管理のミスをゼロにする」ための最強スキル
あなたのように業務効率化を本気で考える人にとって、 在庫集計の自動化は“現場の混乱をなくし、正確な在庫を維持する”ための最重要領域 です。
在庫管理は、 入庫・出庫・棚卸・在庫差異・安全在庫など、 人が手で計算すると必ずミスが出ます。
Pythonを使えば、 在庫データ読み込み → 入庫・出庫計算 → 在庫残計算 → レポート化 まで完全自動化できます。
初心者でも理解できるように、例題を交えて丁寧に解説します。
在庫集計の基本構造(最重要ポイント)
在庫集計は次の3つで構成されます。
入庫量の集計
仕入・補充などの「増える量」。
出庫量の集計
販売・出荷などの「減る量」。
在庫残の計算
期首在庫 + 入庫 − 出庫 = 在庫残。
この3つを理解すれば、どんな在庫管理でも自動化できます。
在庫データの例(よくあるExcel構造)
次のようなExcelを想定します。
- 日付
- 商品
- 種別(入庫 or 出庫)
- 数量
この構造を前提に、在庫集計テンプレートを作ります。
在庫集計の基本テンプレート(まずはこれを押さえる)
入庫・出庫を分けて集計し、在庫残を計算する例
import pandas as pd
df = pd.read_excel("stock.xlsx")
df["入庫量"] = df.apply(lambda x: x["数量"] if x["種別"] == "入庫" else 0, axis=1)
df["出庫量"] = df.apply(lambda x: x["数量"] if x["種別"] == "出庫" else 0, axis=1)
summary = df.groupby("商品")[["入庫量", "出庫量"]].sum()
summary["在庫残"] = summary["入庫量"] - summary["出庫量"]
summary.to_excel("stock_summary.xlsx")
Python深掘りポイント
apply() を使って「入庫なら入庫量に入れる」「出庫なら出庫量に入れる」という処理をしています。 その後、商品ごとに入庫量・出庫量を合計し、 入庫 − 出庫 で在庫残を計算します。
月別在庫集計(在庫推移を見たいときに必須)
日付から月を抽出して集計する例
df["日付"] = pd.to_datetime(df["日付"])
df["月"] = df["日付"].dt.to_period("M")
monthly = df.groupby(["商品", "月"])[["入庫量", "出庫量"]].sum()
monthly["在庫残"] = monthly["入庫量"] - monthly["出庫量"]
monthly.to_excel("stock_monthly.xlsx")
Python深掘りポイント
dt.to_period("M") を使うことで「2026-06」のような月単位に変換できます。 月別の在庫推移を見たいときに必須のテクニックです。
商品×月の在庫推移をピボット形式で出力する
ピボットテーブル形式で在庫残を出力する例
pivot = pd.pivot_table(
monthly.reset_index(),
index="商品",
columns="月",
values="在庫残",
aggfunc="sum",
fill_value=0
)
pivot.to_excel("stock_pivot.xlsx")
Python深掘りポイント
Excelのピボットテーブルと同じ形で出力できます。 商品×月の在庫推移が一目で分かるため、 在庫管理のレポートとして非常に強力です。
安全在庫を設定して不足商品を自動検出する(実務で必須)
安全在庫を下回った商品を抽出する例
safe_stock = 50
alert = summary[summary["在庫残"] < safe_stock]
alert.to_excel("stock_alert.xlsx")
Python深掘りポイント
安全在庫を設定することで、 「補充が必要な商品」を自動で抽出できます。 在庫切れ防止に直結する重要な処理です。
在庫差異(棚卸差異)を自動計算する
実棚卸データと比較して差異を出す例
actual = pd.read_excel("tanaoroshi.xlsx")
merged = summary.merge(actual, on="商品", how="left")
merged["差異"] = merged["在庫残"] - merged["実棚卸"]
merged.to_excel("stock_difference.xlsx")
Python深掘りポイント
棚卸差異は「帳簿在庫 − 実棚卸」で計算できます。 差異が大きい商品は、ロス・入力ミス・盗難などの可能性があります。
在庫集計を「見やすいExcel」に整形する
集計結果を複数シートにまとめる例
with pd.ExcelWriter("stock_report.xlsx") as writer:
summary.to_excel(writer, sheet_name="商品別在庫")
monthly.to_excel(writer, sheet_name="月別在庫")
pivot.to_excel(writer, sheet_name="在庫推移表")
Python深掘りポイント
在庫レポートは複数シートにまとめると見やすくなります。 提出用の在庫レポートとしてそのまま使えます。
在庫推移グラフを自動生成する(レポートとして完成)
月別在庫残の折れ線グラフを作成する例
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference
pivot.to_excel("stock_pivot.xlsx")
wb = load_workbook("stock_pivot.xlsx")
ws = wb.active
chart = LineChart()
chart.title = "在庫推移"
values = Reference(ws, min_col=2, min_row=2, max_col=1 + len(pivot.columns), max_row=1 + len(pivot))
labels = Reference(ws, min_col=2, min_row=1, max_col=1 + len(pivot.columns))
chart.add_data(values, titles_from_data=True)
chart.set_categories(labels)
ws.add_chart(chart, "E2")
wb.save("stock_pivot_chart.xlsx")
Python深掘りポイント
在庫は「推移」が重要です。 折れ線グラフを使うことで、 在庫の増減を視覚的に理解できます。
在庫集計を業務で設計するときの視点
入庫・出庫を必ず分けて記録する
在庫計算の基盤になります。
月別集計を作る
在庫推移の把握に必須です。
安全在庫を設定する
在庫切れ防止に直結します。
棚卸差異を必ず計算する
在庫の正確性を維持できます。
