shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】2つのブックを比較!セルごとの変更点を自動検出するサンプル

Excelで2つのブックを比較し、同じセル位置にある値が異なる場合、そのセルを強調表示して違いをわかりやすくする方法です。

同じブック内のシートを比較する場合は、【Excel】条件付き書式を使って2つのシートの違いを比較する方法 のように標準機能で対応可能ですが、異なるブック間の比較にはVBAやPowerQueryなどの活用が必要です。

内容:

なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2504)です。

アウトプットイメージ

異なるブックにあるシートで、VBAを活用して下図のように同じセル位置にある値が異なる場合、そのセルを黄色にします。

同じセル位置にある値が異なる場合、そのセルを黄色にしている

異なるブックでセルごとの変更点を強調表示

VBAサンプル

前提条件

このサンプルは、セルごとの変更点を比較したいブックが次のパスにある前提です。

今回ファイル: C:\Users\Username\Desktop\今回分.xlsx
前回ファイル: C:\Users\Username\Desktop\前回分.xlsx

また、各ブックには一つのシートのみ存在します。

サンプル例

VBAのサンプルは次のとおりです。

Sub データ比較()
    Dim 今回ファイル As Workbook, 前回ファイル As Workbook
    
    ' Excelファイルを開く'
    Set 今回ファイル = Workbooks.Open("C:\Users\Username\Desktop\Book1.xlsx")
    Set 前回ファイル = Workbooks.Open("C:\Users\Username\Desktop\Book2.xlsx")
    
    ' アクティブシートの比較をサブプロシージャで実行'
    Call シート比較(今回ファイル.ActiveSheet, 前回ファイル.ActiveSheet)
    
    ' 前回ファイルを閉じる'
    前回ファイル.Close SaveChanges:=False
End Sub

Sub シート比較(今回シート As Worksheet, 前回シート As Worksheet)
    Dim セル As Range
    
    ' 各セルを比較'
    For Each セル In 前回シート.UsedRange
        If 今回シート.Range(セル.Address).Value <> セル.Value Then
            今回シート.Range(セル.Address).Interior.Color = RGB(255, 255, 0)
        End If
    Next セル
End Sub

 

補足説明

主なポイントは次のとおりです。

  1. ブックの読み込み
    Workbooks.Open を使い、比較対象となる2つのExcelファイルを開きます。
  2. アクティブシートの比較
    Call シート比較(今回ファイル.ActiveSheet, 前回ファイル.ActiveSheet) により、開いたブックのアクティブなシート同士を比較します。
  3. セルごとの比較
    前回シート.UsedRange をループし、各セルの値をチェックします。
    今回シート.Range(セル.Address).Value <> セル.Value の条件を満たした場合、セルの背景色を 黄色 (RGB(255, 255, 0)) に変更します。
  4. 前回ファイルの閉じる処理
    前回ファイル.Close SaveChanges:=False により、変更を保存せずに前回のファイルを閉じます。今回ファイルは起動したままとしています。

このコードは比較的シンプルですが、異なるブック間の比較を自動化する実用的な例になっています。

参考情報

その他の比較する方法

Excelで2つのファイルを比較する方法には、使用するExcelのライセンスや目的によっていくつかの選択肢があります。それぞれの方法について以下で紹介しています。

shikumika.org

 

異なるブックで、セル位置も異なる場合の比較に利用できるマクロを「note」で販売しています。同様のレイアウトのデータであればVBAを修正することなく、汎用的に利用できる事例です。

note.com

以上、Excel VBAで2つのブックを比較し、セルごとの変更点を自動検出するサンプルでした。