2019.09.15スポンサーリンクExcelはデータを扱うツール。いろいろなデータを表に反映して似たようなデータを照合して比較したい時って結構ありませんか?2つのデータの差分を一発で色付けしてわかりやすくしたい、そんな機能があったらきっと便利です。そこで、2シートに比較したいデータを貼り付けし、超絶簡単に大量のデータを比較するVBAマクロを作成してみました。データベースからデータを取得し、データを解析して差分を抽出したい時なんかは大いに役に立つと思います。百聞は一見に如かず、一目瞭然、一発でイメージが湧き、使い方がわかるようなGIFアニメ付きです。個人用マクロなどにコピーして実行するだけなので、ぜひお試しください。最後にデータ差分比較抽出ツールについてデータ比較ツールとしてWinMergeなどの定番ソフトを使えば細かい比較ができます。それで目的が満たされればよいですが、テキストなので解析がめんどくさいですね。Excelでアドインとか使わずに手軽に思い通りに比較できる手段ってないですよね。VLOOKUP関数や条件付き書式をいちいち使うのも結構大変です。そこで、Excelで簡単に行、列、セル単位で一発で色で差分を確認できると便利かなぁと思ってマクロを作成してみました。今回作ったマクロは以下2パターンの比較になります。作成した比較処理の主なポイントは以下です。インターフェースを簡単にし、直感で操作できるように目指しました。詳細な仕様はソース上のコメントなどで補足してます。比較したいデータをそれぞれ2シートに分けて設定します。同じ位置関係で比較しやすくするためです。プライマリーキーの入力指定有無で比較方法を判断キー未入力で全行列セル比較、キー列指定でその列をユニークデータと判断して1行データありなしの比較を行います。行と列のデータ数が全く同じ全データのセルの一致・不一致を差分比較まずは行列の数が同じデータを2シートに設定して、単純にその値の差分を抽出したい場合に行う方法です。2シートの行列セル全比較で色を付けて表示する操作イメージ下記画像にて比較操作のイメージを沸かせてみてください。テストデータを貼り付けて適当に値をいじって左右の違いを浮き彫りにしてます。データ数が違う場合は事前にチェックで弾きます。次は行列の数が違っても同じでもよいデータを2シートに設定して、プライマリーキー(一意となる列)を指定して行ごとのデータありなしの違いを含めて差分を抽出したい場合に行う方法です。2シートのプライマリーキー列指定比較で色を付けて表示する操作イメージ下記画像にて比較操作のイメージを沸かせてみてください。テストデータを貼り付けてプライマリーキー列の値をいじって左右の行列の違いを浮き彫りにしてます。プライマリキーによる重複データは処理中にチェックで弾きます。細かい処理はコメントで補足してますが、ザックリとした仕様を箇条書きで記載します。左右2シートをデータ照合比較し、差分の行やセルに色を付ける。比較方法は「行列セル全比較」と「プライマリーキー列指定比較」の2パターン。元シートを比較用にコピーして処理する。(元シートは一切いじらないので繰り返し可能)比較処理に必要なチェックを実施する。比較対象2シートの左側シートがアクティブの状態で実行。プライマリーキーは数字か英字のみで指定。(複数の場合はカンマ区切り)セル全比較の場合は左右シート両方共、行と列が同じである必要がある。プライマリーキー列指定比較の場合はそのキーで一意になっている必要がある。※正常に動作するかもしれないが、しないかもしれない。左右2シートデータ照合キー差分比較VBAマクロのソースコード差分比較でデータ解析効率を爆上げしたい方は、下記のソースコードを以下↓↓↓のリンクの内容に従って個人用マクロにコピーしてご使用ください。仕事や勉強を行う上で、Excelを使用するならば、絶対に知っておいた方がよい「個人用マクロブックの設定方法」をまとめました。マクロを頻繁に使用する人、今まで「作業中のブック」のみに個別設定していた人は、自分の作業に合った共通処理の...caymezon.com2019.03.10マクロならば、痒いところに手が届きます。用途によっては目的に沿わない可能性がありますが、Const値を持たせてなるべく汎用的に作成しています。自分に合った方法にカスタマイズしてみてください。VBAマクロの勉強にも少しは役立つと思います。結果的に割と複雑な処理になってしまったので、もし何かバグっていたらごめんなさい。気付いたら改修します。'・左右2シートをデータ照合比較し、差分の行やセルに色を付ける。'・比較方法は「行列セル全比較」と「プライマリーキー列指定比較」の2パターン。'・元シートを比較用にコピーして処理する。'・比較処理に必要なチェックを実施する。'・比較対象2シートの左側シートがアクティブの状態で実行。'・プライマリーキーは数字か英字のみで指定。'・セル全比較の場合は左右シート両方共、行と列が同じである必要がある。'・プライマリーキー列指定比較の場合はそのキーで一意になっている必要がある。'・セルの表示形式は全セル「文字列」推奨。'・数式は非推奨(未検証)。※正常に動作するかもしれないが、しないかもしれない。'※1:「ByRef引数の型が一致しません。"比較対象の左側を現在シートにして実行してください。"」シートの開始行が違います。