Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11110 / 76735 ←次へ | 前へ→

【71166】Re:異なるデータを抽出させる
発言  kanabun  - 12/2/3(金) 11:21 -

引用なし
パスワード
   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

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

5 hits

【71162】異なるデータを抽出させる PePe 12/2/3(金) 10:36 質問
【71164】Re:異なるデータを抽出させる kanabun 12/2/3(金) 11:03 回答
【71167】Re:異なるデータを抽出させる PePe 12/2/3(金) 11:29 質問
【71168】Re:異なるデータを抽出させる Hirofumi 12/2/3(金) 11:31 発言
【71170】Re:異なるデータを抽出させる Hirofumi 12/2/3(金) 11:57 発言
【71172】Re:異なるデータを抽出させる Hirofumi 12/2/3(金) 12:42 発言
【71171】Re:異なるデータを抽出させる kanabun 12/2/3(金) 11:59 発言
【71166】Re:異なるデータを抽出させる kanabun 12/2/3(金) 11:21 発言
【71169】Re:異なるデータを抽出させる kanabun 12/2/3(金) 11:32 発言
【71173】Re:異なるデータを抽出させる PePe 12/2/3(金) 15:47 お礼
【71175】Re:異なるデータを抽出させる kanabun 12/2/3(金) 17:04 発言
【71176】Re:異なるデータを抽出させる kanabun 12/2/3(金) 18:29 発言
【71177】Re:異なるデータを抽出させる kanabun 12/2/3(金) 19:08 発言

11110 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free