| 
    
     |  | 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
 
 転記するデータをいったん配列に入れておき、
 最後に一括して シートに転記するようにすれば、
 もっと速く処理できますけど。
 
 
 |  |