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

Python Python
スポンサーリンク

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

深掘りポイント

在庫は「推移」が重要です。 折れ線グラフを使うことで、 在庫の増減を視覚的に理解できます。

在庫集計を業務で設計するときの視点

入庫・出庫を必ず分けて記録する

在庫計算の基盤になります。

月別集計を作る

在庫推移の把握に必須です。

安全在庫を設定する

在庫切れ防止に直結します。

棚卸差異を必ず計算する

在庫の正確性を維持できます。

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