エクセルでシートの比較
なんというか
MS-Excel、いわゆるエクセルで作ったデータをもらうことがよくある。
で、しばらくするとその 己攵 言丁 片反 がまた送られてくる。
親切な人ならば変わった場所に色をつけたりしてわかりやすくしてくれるのだが、世の中にはそういうことをしてくれず、自分で間違い探しをしろというやつもいる。
こんなとき、エディターならファイルの比較とかで簡単に違っているところを見つけることができるのにエクセルにはそういう気の効いた機能がない。
そういうことで困った経験があるのは私だけではないはずである。
というわけで、マクロを組んでみた。
基本的なプログラムの構成はそんなに難しくない。
しかし、エクセルのワークシートの操作をどうやってマクロから行なったらいいのかがいつものとおりさっぱりわからない。
こんなときは検索しまくるのだが、私がわかる程度に解説されているページは意外に少ない。というか、検索キーワードが悪いのかもしれない。
それでもなんとか目的の情報は得られたので、会社の残業(のふりをしている)時間などを利用してコツコツ(コソコソともいう)と作りあげたのが今回のネタである。
マクロの本体はここ。
マクロの組み込み方に関しては各自調べて好きな方法で組み込んでもらいたい。
私のページにもExcelでCSVファイルを入出力するマクロのところで簡単に書いてある。
ちなみに、これもExcel97でしか動作確認をしていないので、今時のバージョンで動くかどうかは不明。
仕様、というかこんなやつ
たとえば、
これとか
これみたいに似ているけど微妙に違うワークシートがあったとする。
さて、この二つ、どこが違うんだろう。
って、このくらい小さいシートでいかにもな違いならなら目視で見つけることができるが、本当に間違い探しみたいなシートになると、一つ一つ目で確認して行くのは至難の技である。
そこでこのマクロを起動し、シート1の比較したい範囲を指定する。
次にシート2の比較したい範囲を指定する。
で、比較したい項目にチェックを入れる。この例では「値」にチェックが入っている。
ここでOKボタンをクリックすると次に色の選択のダイアログが出るので違いのあったところを塗りつぶしたい色を選択する。今回は黄緑を選んで実行した。
このように異なっている場所(この例ではVALUEとなっているセル)が塗りつぶされる。
引きつづき「配置」と「種類」にチェックを入れて実行すると、このように文字の配置とフォントの種類の異なっているセルが塗りつぶされる。
だいたいこんな仕様である。
範囲指定の方法
範囲を指定するには、ボックス内に直接セル範囲を書き込んでもいいが、右側にある"_"の部分をクリックすることでワークシート上で範囲指定することができる。
範囲を指定したら同様に入力欄の右側のボタンをクリックすることで、もとのダイアログに戻ってこれる。
指定できる範囲は連続している一つの範囲のみ。
つまり、マウスのドラッグ一回で指定できる四角の範囲のみである。
二つのシートで比較範囲が異なっていた場合、それぞれの範囲の左上を基点とし、右方向、下方向とも範囲の広いほうの列数および行数で比較を行なう。
また、上記のようにセルを一つだけ指定した場合、そのセルから右側および下側のデータの入っている範囲すべてを自動的に選択するので、通常はこっちのほうが楽でいいと思える。
比較できる項目の説明
説明するほどのこともないと思うが・・・。
値
セルの値。
いわゆるセルに書かれている文字とか数字。
計算式
「値」が目で見てわかるのに対し、計算式はそうは行かない。
同じ値でも計算式が異なっているたまたま同じになっていることもある。
空白に見えるセルでも実際には計算式が入っていることもある。
どちらかというと値の比較よりも重要かもしれない。
ちなみに、値の比較も行われるので上記の「値」は値だけを比較したい場合に使用して、普段はこちらを使ったほうがいいかもしれない。
配置
左寄せ、中央揃え、右寄せなどのセル内部の文字の配置。
フォント-種類
フォントの種類。
フォント-サイズ
フォントのサイズ。
フォント-スタイル
太字、斜体、アンダーラインなどのフォントスタイル。
使用上の注意
フリーなんで思ったとおりに動かなくても文句を言わないで欲しい(笑)。
色で区別しているため、既に色を塗ってあるセルも塗り変えてしまうので注意が必要。
使う前にバックアップを取ったほうが無難。
デフォルトの比較項目を変更したい人は、Compare.basのソースを見てTrueとかFalseを適当に書き換えればよい。
使い勝手が悪いと思った人は、自分で書き換えてなんとかするよーに(笑)。
2004/06/22 ちょっと修正 古いのはここ
2005/12/22 なんか使い物にならないんだけどなんとかならないのか?という人はこちらも試してみるように。
表紙へ