|
こんばんは。
同じ質問なら、前のレスに続けた方が良かったかも?
シートで考えてみたので参考にしてください。
シート1A列にデータ
シート2A列にデータ
両A列を比較して違うものがあったら、A列にシート1の値を、B列にシート2の値を
新しくシートを作り書き出します。
ただし、各A列には重複がないものとします。
ブックにはシート1とシート2しかないものとします。(あってもかまいませんが)
Sub test()
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim NewSh As Worksheet
Dim myRow1 As Long
Dim myRow2 As Long
Dim myCnt As Long
Dim myVal1 As Variant
Dim myVal2 As Variant
Dim myDic As Object
Dim i As Long
Set Sh1 = Sheets("Sheet1")
Set Sh2 = Sheets("Sheet2")
Set myDic = CreateObject("Scripting.Dictionary")
myRow1 = Sh1.Range("A65536").End(xlUp).Row
myRow2 = Sh2.Range("A65536").End(xlUp).Row
If myRow1 >= myRow2 Then
myCnt = myRow1
Else
myCnt = myRow2
End If
myVal1 = Sh1.Range("A1").Resize(myCnt).Value
myVal2 = Sh2.Range("A1").Resize(myCnt).Value
For i = 1 To myCnt
If myVal1(i, 1) <> myVal2(i, 1) Then
myDic(myVal1(i, 1)) = myVal2(i, 1)
End If
Next
Set NewSh = Sheets.Add(after:=Sheets(Sheets.Count))
With NewSh.Range("A1").Resize(myDic.Count)
.Value = Application.Transpose(myDic.keys)
.Offset(, 1).Value = Application.Transpose(myDic.Items)
End With
Set Sh1 = Nothing: Set Sh2 = Nothing: Set myDic = Nothing: Set NewSh = Nothing
End Sub
|
|