|
▼74 さん:
> 複数列にデータが入っているサンプルとなります。
複数列を行単位で比較して
「A」にあって「B」にないものを「C」に抽出するために、
n さんと Yuki さんの方法を勝手にドッキングさせてもらいました
'参照設定:Microsoft Forms 2.0 Object Library
Sub Try3()
Dim r1 As Range 'シートA データ範囲
Dim r2 As Range 'シートB データ範囲
Dim r3 As Range 'シートC 貼り付け先セル
Dim s1() As String 'Aの各行をTAB区切りで文字列にしたもの(行数分配列)
Dim s2() As String 'Bの各行をTAB区切りで文字列にしたもの(行数分配列)
Dim s3() As String
Dim i As Long
Set r1 = Worksheets("A").[A1].CurrentRegion '↓「A」と列数をそろえる
Set r2 = Worksheets("B").[A1].CurrentRegion.Resize(, r1.Columns.Count)
With New DataObject
r1.Copy
.GetFromClipboard
s1 = Split(.GetText(1), vbCrLf)
r2.Copy
.GetFromClipboard
s2 = Split(.GetText(1), vbCrLf)
End With
Application.CutCopyMode = True
With Worksheets("C")
.UsedRange.ClearContents '抽出先シートのクリア
Set r3 = .[A1] '貼り付け先セル
End With
With CreateObject("Scripting.Dictionary")
For i = 0 To UBound(s2)
.Item(s2(i)) = Empty
Next
For i = 0 To UBound(s1)
If Not .Exists(s1(i)) Then
s3 = Split(s1(i), vbTab)
r3.Resize(, UBound(s3) + 1).Value = s3
Set r3 = r3.Offset(1)
End If
Next
End With
End Sub
|
|