|    | 
     ▼あき さん: 
 
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 
 | 
     
    
   |