- 締切済み
エクセルで2つのファイルを差分して、追加・削除されたそれぞれのファイルのデータセルを色で塗る。
エクセルで2つのファイルを差分して、追加・削除されたそれぞれのファイルのデータセルを色で塗る。変更のないものは元ファイルから新ファイルへセル内容をコピーするというVBAは可能でしょうか? 例)元ファイル、新ファイルにおいてA列を差分。 元ファイル 新ファイル A B A B 1 aa1 bb1 aa1 2 aa2 bb2 aa3 3 aa3 bb3 aaA 4 aa4 bb4 aa4 とあるとします。 追加>新ファイルのA3セルを塗る。 削除>元ファイルのA2セルを塗る。 変更なし>新ファイルのB1、B2、B4へ元ファイルのB1、B3、B4のデータをコピペ。 元ファイル 新ファイル A B A B 1 aa1 bb1 aa1 bb1 2 aa2 bb2 aa3 bb3 3 aa3 bb3 aaA 4 aa4 bb4 aa4 bb4 このような感じです。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問者はデータベースとかプログラムとかを考えたことが無いのであろう、こともなげに差分とか言うが、両者の行(レコード)および項目(列)を結びつけるれこーどのキーのようなものが、両方に存在しないとそもそもこの議論ができないのに気づいていない。私の言うことを良く考えてみてください。
- hallo-2007
- ベストアンサー率41% (888/2115)
たまたまですが、フリーソフトがありました。 http://www2.moug.net/cgi-bin/softwaredl.cgi?excel+SI2007070601 私は、使用した事ないので、ご自身でお試しください。
お礼
ありがとうございます。 少し思っているものと違うようなので...
補足
すいません。差分という言い方がまずかったでしょうか。 下記を元に作業用シートを作らず、更新前、更新後のシート上で処理が出来ればと悩んでいます。 Sub Sabun() Dim myRB As Long '更新前データを操作する行番号 Dim myRA As Long '更新後データを操作する行番号 Dim myDel As Boolean '削除を判断するフラグ変数 Dim myAdd As Boolean '追加を判断するフラグ変数 '作業用シートのデータを消去 Worksheets("作業用").Cells.Delete '作業用シートに更新前後の2つの表をコピー Worksheets("更新前").Range("A1").CurrentRegion.Copy Destination:= _ Worksheets("作業用").Range("A1") Worksheets("更新後").Range("A1").CurrentRegion.Copy Destination:= _ Worksheets("作業用").Range("F1") '作業用シートを選択 Worksheets("作業用").Select '表の列幅を自動調整 Columns("A:I").AutoFit '更新後削除されたデータをチェック myRB = 2 Do Until Cells(myRB, 2).Value = "" myDel = True myRA = 2 Do Until Cells(myRA, 7).Value = "" If Cells(myRB, 2).Value = Cells(myRA, 7).Value Then myDel = False Exit Do End If myRA = myRA + 1 Loop If myDel = True Then Cells(myRB, 2).Interior.ColorIndex = 37 End If myRB = myRB + 1 Loop '更新後追加されたデータをチェック myRA = 2 Do Until Cells(myRA, 7).Value = "" myAdd = True myRB = 2 Do Until Cells(myRB, 2).Value = "" If Cells(myRB, 2).Value = Cells(myRA, 7).Value Then myAdd = False Exit Do End If myRB = myRB + 1 Loop If myAdd = True Then Cells(myRA, 7).Interior.ColorIndex = 37 End If myRA = myRA + 1 Loop End Sub