|    | 
     Findメソッドでの検索は遅いので、 
こんな方法(辞書に検索データをリストしておく)を使うと 
効率よくなります。 
 
Sub Try1() 
 Dim i As Integer, k As Integer 
 Dim LstR1 As Long, LstR2 As Long 
 Dim WS1 As Worksheet, WS2 As Worksheet 
 Dim dic As Object 
 Dim v 
  
 Set dic = CreateObject("Scripting.Dictionary") 
 Set WS1 = ThisWorkbook.Worksheets(1) 
 Set WS2 = Workbooks.Open(ThisWorkbook.Path & "\Book2.xlsx") 
  
 '始めに Book1の現在のデータをDictionary(辞書)に登録しておく 
 With WS1 
   LstR1 = .Cells(.Rows.Count, 1).End(xlUp).Row 
   v = .Range("A1:A" & LstR1).Value 
   For k = 1 To UBound(v) 
     dic(v(k, 1)) = Empty 
   Next 
 End With 
 With WS2 
   LstR2 = .Cells(.Rows.Count, 1).End(xlUp).Row 
   v = .Range("A1:A" & LstR2).Value 
   For k = 1 To UBound(v) 
     'ws2のデータが辞書になかったら、転記する 
     If Not dic.Exists(v(k, 1)) Then 
       LstR1 = LstR1 + 1 
       WS1.Cells(LstR1, 1).Value = v(k, 1) 
     End If 
   Next 
 End With 
  
End Sub 
 
転記するデータをいったん配列に入れておき、 
最後に一括して シートに転記するようにすれば、 
もっと速く処理できますけど。 
 
 | 
     
    
   |