Excel差分比較は「2つのExcelの違いを自動で検出し、変更点だけを抽出して確認作業をゼロにする」ための最強スキル
MONO、あなたのように業務効率化を本気で考える人にとって、 Excel差分比較の自動化は“ミス防止 × 時間削減”を同時に達成できる最強の技術 です。
Excelの差分比較は本来、手作業で 「並べて目視 → 違いを探す → 修正 → 再確認」 という非常に面倒な作業が必要です。
Pythonを使えば、 読み込み → 差分検出 → 差分一覧作成 → Excel出力 まで完全自動化できます。
初心者でも理解できるように、例題を交えて丁寧に解説します。
Excel差分比較の基本構造(最重要ポイント)
差分比較は次の4つで構成される
- 行の差分(追加・削除)
- 列の差分(項目変更)
- 値の差分(変更点)
- 重複・キー不一致の検出
Pythonでは pandas を使うと高速かつ正確に比較できます。
最も基本的な「2つのExcelの差分比較」テンプレート
old.xlsx と new.xlsx の違いを検出する例
import pandas as pd
old = pd.read_excel("old.xlsx")
new = pd.read_excel("new.xlsx")
diff = new.compare(old)
diff.to_excel("diff_report.xlsx")
Python深掘りポイント
compare()は pandas の差分比較専用機能- old と new の違いだけを抽出してくれる
- 差分一覧を Excel に出力できる
行の追加・削除を検出する(最も重要な差分)
行が増えたか減ったかを確認する
added = new[~new.apply(tuple,1).isin(old.apply(tuple,1))]
deleted = old[~old.apply(tuple,1).isin(new.apply(tuple,1))]
Python深掘りポイント
- apply(tuple,1) で「行全体を1つのデータ」として比較
- 新規追加行・削除行を確実に検出できる
- マスタ更新・売上データ更新で必須
キー(商品コード・ID)で差分比較する(実務で最も使う)
商品コードをキーにして差分を比較する例
merged = old.merge(new, on="商品コード", how="outer", suffixes=("_old", "_new"))
changed = merged[merged["売上_old"] != merged["売上_new"]]
Python深掘りポイント
- 商品コード・顧客IDなど「キー」を使うと精度が高い
- suffixes で old/new の列名を自動で付けられる
- 実務ではこの方法が最も使われる
列の差分(項目変更)を検出する
old と new の列名の違いを確認
old_cols = set(old.columns)
new_cols = set(new.columns)
added_cols = new_cols - old_cols
deleted_cols = old_cols - new_cols
Python深掘りポイント
- 項目が増えた・減ったを自動検出
- システム更新時のチェックで必須
値の差分を色付きでExcelに出力する(視認性が最強)
差分セルを赤色にする(openpyxl)
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
wb = load_workbook("new.xlsx")
ws = wb.active
for idx, row in changed.iterrows():
excel_row = idx + 2
ws[f"C{excel_row}"].fill = PatternFill(start_color="FF9999", fill_type="solid")
wb.save("new_highlight.xlsx")
Python深掘りポイント
- 差分セルを赤色にすると一瞬で確認できる
- Excel担当者がすぐに修正できる
- 差分一覧+色付けは最強の組み合わせ
実務例①:売上データの差分比較(毎日使う)
日次売上の差分を抽出する例
changed = merged[merged["数量_old"] != merged["数量_new"]]
Python解説
数量が変わった商品だけを抽出できるため、 「どこが変わったか」を一瞬で把握できます。
実務例②:マスタデータの差分比較(品質管理で必須)
顧客マスタの変更点を抽出
changed = merged[
(merged["住所_old"] != merged["住所_new"]) |
(merged["電話_old"] != merged["電話_new"])
]
Python解説
住所変更・電話番号変更など、 マスタ更新の差分を自動で検出できます。
実務例③:複数Excelをまとめて差分比較する
フォルダ内の old/new を一括比較
import glob
files_old = glob.glob("old/*.xlsx")
files_new = glob.glob("new/*.xlsx")
for o, n in zip(files_old, files_new):
old = pd.read_excel(o)
new = pd.read_excel(n)
# 差分比較処理…
Python解説
月次・週次の大量ファイルを一括比較できるため、 手作業では絶対に不可能な効率化が実現します。
Excel差分比較を業務で設計するときの視点
キー(商品コード・ID)を必ず使う
精度が大幅に上がる。
差分一覧を作る
確認作業が圧倒的に楽になる。
色付けを使う
視認性が最強になる。
複数Excelの一括比較を自動化する
月次・週次の業務が一瞬で終わる。
