- Excel分割は「大きなExcelを条件ごとに自動で切り分け、管理しやすい小さなファイルに変換する」ための最強スキル
- Excel分割の基本構造(最重要ポイント)
- 店舗ごとにExcelを分割する(最も基本的なテンプレート)
- 担当者ごとにExcelを分割する(営業部でよく使う)
- 月別にExcelを分割する(経理・管理部でよく使う)
- シートごとに分割する(1つのExcel → 複数Excel)
- 行数で分割する(一定行ごとにファイルを分ける)
- 条件式で分割する(柔軟な分割が可能)
- 実務例①:店舗別にフォルダを作って保存する
- 実務例②:複数条件で分割(店舗 × 月)
- 実務例③:分割後にテンプレートへ書き込む(帳票化)
- Excel分割を業務で設計するときの視点
Excel分割は「大きなExcelを条件ごとに自動で切り分け、管理しやすい小さなファイルに変換する」ための最強スキル
業務効率化を本気で考える人にとって、
Excel分割(スプリット処理)は“Pythonで劇的に効率化できるExcel業務” です。
毎日の現場では、次のような作業が頻繁に発生します。
- 店舗ごとにファイルを分けたい
- 担当者ごとにExcelを分割したい
- 月別にシートを分けたい
- 大きなExcelを複数ファイルに自動で切り出したい
Pythonを使えば、
条件ごとに自動でExcelを分割 → 保存
まで完全自動化できます。
初心者でも理解できるように、例題を交えて丁寧に解説します。
Excel分割の基本構造(最重要ポイント)
Excel分割は次の3ステップで構成されます。
読み込み(pandas)
大きなExcelを読み込みます。
条件ごとにグループ化(groupby)
店舗・担当者・月などで分割します。
保存(to_excel)
分割したデータを個別のExcelとして保存します。
この3つを理解すれば、どんな分割処理でも作れます。
店舗ごとにExcelを分割する(最も基本的なテンプレート)
大きなExcel → 店舗別に自動で分割
import pandas as pd
df = pd.read_excel("sales.xlsx")
groups = df.groupby("店舗")
for store, data in groups:
filename = f"{store}.xlsx"
data.to_excel(filename, index=False)
Python深掘りポイント
groupby が Excel分割の中心です。
ループの中で store(店舗名)と data(その店舗のデータ)が取り出されます。
to_excel で自動的にファイルが作成されます。
担当者ごとにExcelを分割する(営業部でよく使う)
担当者列で分割
df = pd.read_excel("sales.xlsx")
groups = df.groupby("担当者")
for staff, data in groups:
data.to_excel(f"{staff}_担当分.xlsx", index=False)
Python深掘りポイント
営業部門では「担当者別の売上ファイル」がよく求められます。
担当者名をファイル名にすることで、管理しやすくなります。
月別にExcelを分割する(経理・管理部でよく使う)
日付から月を抽出して分割
df = pd.read_excel("sales.xlsx")
df["月"] = pd.to_datetime(df["日付"]).dt.month
groups = df.groupby("月")
for month, data in groups:
data.to_excel(f"{month}月.xlsx", index=False)
Python深掘りポイント
月次レポート作成の前処理として非常に便利です。
月列を作ることで、どんなデータでも月別に分割できます。
シートごとに分割する(1つのExcel → 複数Excel)
Excelの各シートを別ファイルに分割
import pandas as pd
xlsx = pd.ExcelFile("multi_sheet.xlsx")
for sheet in xlsx.sheet_names:
df = pd.read_excel("multi_sheet.xlsx", sheet_name=sheet)
df.to_excel(f"{sheet}.xlsx", index=False)
Python深掘りポイント
ExcelFile を使うと、シート名一覧を取得できます。
シート単位での分割は、帳票管理でよく使われます。
行数で分割する(一定行ごとにファイルを分ける)
1000行ごとに分割する例
import math
df = pd.read_excel("bigdata.xlsx")
chunk_size = 1000
num_chunks = math.ceil(len(df) / chunk_size)
for i in range(num_chunks):
start = i * chunk_size
end = start + chunk_size
df[start:end].to_excel(f"part_{i+1}.xlsx", index=False)
Python深掘りポイント
大量データを扱うときに便利です。
Excelの行数制限(104万行)を超える場合にも使えます。
条件式で分割する(柔軟な分割が可能)
売上が10万円以上のデータだけを別ファイルに
df_high = df[df["売上"] >= 100000]
df_high.to_excel("高売上.xlsx", index=False)
Python深掘りポイント
条件式を自由に書けるため、
「特定の条件に合うデータだけを抽出して保存」
という高度な分割ができます。
実務例①:店舗別にフォルダを作って保存する
フォルダを自動生成して分割保存
import os
df = pd.read_excel("sales.xlsx")
for store, data in df.groupby("店舗"):
os.makedirs(store, exist_ok=True)
data.to_excel(f"{store}/{store}.xlsx", index=False)
Python解説
店舗ごとにフォルダを作ることで、管理が圧倒的に楽になります。
実務例②:複数条件で分割(店舗 × 月)
店舗 × 月 の組み合わせで分割
df["月"] = pd.to_datetime(df["日付"]).dt.month
groups = df.groupby(["店舗", "月"])
for (store, month), data in groups:
data.to_excel(f"{store}_{month}月.xlsx", index=False)
Python解説
複数条件での分割は、実務で非常に多いパターンです。
実務例③:分割後にテンプレートへ書き込む(帳票化)
分割 → テンプレートへ差し込み → 保存
from openpyxl import load_workbook
template = "template.xlsx"
for store, data in df.groupby("店舗"):
wb = load_workbook(template)
ws = wb["データ"]
for r_idx, row in data.iterrows():
ws.append(row.values.tolist())
wb.save(f"{store}_帳票.xlsx")
Python解説
分割したデータを帳票テンプレートに流し込むことで、
提出用のExcelを自動生成できます。
Excel分割を業務で設計するときの視点
分割の基準を明確にする
店舗・担当者・月・条件式など。
ファイル名に意味を持たせる
後から探しやすくなります。
groupby を中心に設計する
Excel分割の核となる処理です。
テンプレートと組み合わせる
分割 → 帳票化 → 保存 が自動化できます。
