|
▼あき さん:
Loopは不要です。
teian さんがおっしゃってるように、
> フィルターオプションの設定でやらせても良さそうな気もします。
2枚目のシートに対して、1枚目のシートのB列を【検索条件範囲】として
フィルタオプションを実行すればいいのです。
もちろん、1行目は列見出しが書いてあって、
1枚目のB列の見出しと 2枚目の(フィルタ抽出するシートの)C列の見出しは
一致している必要がありますけど。
あと、
> Set a = .Item("data1").Range("B1").CurrentRegion.Columns(1)
> Set b = .Item("data2").Range("C1").CurrentRegion.Columns(1)
はまずくないですか?
各シートとも「A列にも」データがはいってるとすると、
> .Range("B1").CurrentRegion.Columns(1)
では、結局A列が取得されてしまうことになりませんか?
Sub Try1()
Dim a As Range
Dim b As Range
Dim mySht As Worksheet
With Worksheets
Set a = .Item("data1").Range("B1").CurrentRegion.Columns(2) 'B列
Set b = .Item("data2").Range("A1").CurrentRegion
Set mySht = .Add(After:=.Item(.Count))
End With
If a.Cells(1).Value <> b.Item(1, 3).Value Then
MsgBox "比較する2列の列見出しは同じでなければなりません"
Exit Sub
End If
b.AdvancedFilter xlFilterCopy, a, mySht.Range("A1")
End Sub
|
|