2つの表の比較

Excelブックを更新していてたまに必要になるのが更新前後の比較です。比較対象にはいくつかありますが、主に、更新前後のブックや、修正前後のシートが挙げられます。

2つのブックの比較はExcelのInquireアドインを使った方が簡単なのでそちらをお勧めします。Inquireアドインは、Excelのファイルメニュー→オプション→アドイン→管理コンボでCOMアドインを選択→Inquireにチェック、で、リボンに「検査」もしくは「Inquire」タブが追加され、そこで「ファイル比較」からブックの比較ができるようになります。

ここでは2つのシートの内容を比較するマクロを紹介します。


2つのシートを比較するマクロ

以下のマクロは指定された2つのシートの内容を比較し、異なる箇所に黄色背景色を付けます。

2つ関数がありますが、1つ目のDiffSheet関数がシート比較の主処理を行います。2つ目のGetLarger関数は渡された2つの値の大きい方を返す関数です。コードが長くなるので2つに分けました。

やっていることはコメントに書いてある通りですが、2つのシートのそれぞれの入力されているセル範囲の右終端と下終端をUsedRangeプロパティを使って取得し、2つのシートで終端がより大きい方を採用して、A1セルから右下の終端に向かってセルを1つずつループし、内容を比較して異なっていれば背景色を付けています。

UsedRangeプロパティを使って終端を求めている理由は、入力されていないセルは比較する必要がないため、入力されている範囲のみを比較するためです。

使い方

上の比較関数のDiffSheet()の使い方は、引数に比較元と比較先のWorksheetオブジェクトを渡して実行するだけです。

以下はシート名が”Sheet1″と”Sheet2″の比較を行うサンプルです。

実行すると、以下のように2つのシートで異なる部分に背景色が設定されます。

 

イミディエイトウィンドウには相違セルのアドレスが出力されます。