プロが教えるわが家の防犯対策術!

エクセルで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

このような感じです。
どうぞよろしくお願いします。

A 回答 (2件)

質問者はデータベースとかプログラムとかを考えたことが無いのであろう、こともなげに差分とか言うが、両者の行(レコード)および項目(列)を結びつけるれこーどのキーのようなものが、両方に存在しないとそもそもこの議論ができないのに気づいていない。

私の言うことを良く考えてみてください。

この回答への補足

すいません。差分という言い方がまずかったでしょうか。
下記を元に作業用シートを作らず、更新前、更新後のシート上で処理が出来ればと悩んでいます。

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

補足日時:2008/02/04 11:21
    • good
    • 0

たまたまですが、フリーソフトがありました。


http://www2.moug.net/cgi-bin/softwaredl.cgi?exce …
私は、使用した事ないので、ご自身でお試しください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
少し思っているものと違うようなので...

お礼日時:2008/02/04 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!