Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel差分比較

Python Python
スポンサーリンク

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の一括比較を自動化する

月次・週次の業務が一瞬で終わる。

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