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
補足説明
主なポイントは次のとおりです。
- ブックの読み込み
Workbooks.Open を使い、比較対象となる2つのExcelファイルを開きます。 - アクティブシートの比較
Call シート比較(今回ファイル.ActiveSheet, 前回ファイル.ActiveSheet) により、開いたブックのアクティブなシート同士を比較します。 - セルごとの比較
前回シート.UsedRange をループし、各セルの値をチェックします。
今回シート.Range(セル.Address).Value <> セル.Value の条件を満たした場合、セルの背景色を 黄色 (RGB(255, 255, 0)) に変更します。 - 前回ファイルの閉じる処理
前回ファイル.Close SaveChanges:=False により、変更を保存せずに前回のファイルを閉じます。今回ファイルは起動したままとしています。
このコードは比較的シンプルですが、異なるブック間の比較を自動化する実用的な例になっています。
参考情報
その他の比較する方法
Excelで2つのファイルを比較する方法には、使用するExcelのライセンスや目的によっていくつかの選択肢があります。それぞれの方法について以下で紹介しています。
異なるブックで、セル位置も異なる場合の比較に利用できるマクロを「note」で販売しています。同様のレイアウトのデータであればVBAを修正することなく、汎用的に利用できる事例です。
以上、Excel VBAで2つのブックを比較し、セルごとの変更点を自動検出するサンプルでした。