Excel VBA質問箱 IV

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

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


7496 / 76732 ←次へ | 前へ→

【74823】Re:別ファイル間でのVLOOKUPの高速処理方法
発言  kanabun  - 13/9/20(金) 22:13 -

引用なし
パスワード
   ▼びゅう さん:

>私が作成したマクロだと時間がかかりすぎて10分近くかかります。

ワークシート関数のVLOOKUPだと、2万行あれば 2万回同じ表を走査しないと
いけないですよね?
ためしてませんが、Dictionaryオブジェクトを使って、B Bookの表をメモリに
書き込んでおけば、2万回表をなめることはしなくて済みます。

Option Explicit

Sub dicLookup()
  Dim i As Long
  Dim v As Variant
  Dim dic As Object
  Set dic = CreateObject("Scripting.Dictionary")

  With Workbooks("B.xls").Worksheets(1)
    v = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)). _
      Resize(, 2).Value
  End With
  For i = 1 To UBound(v)
    dic(v(i, 1)) = v(i, 2)
  Next

  With Workbooks("A.xls").Worksheets(1)
   With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    v = .Value
    For i = 1 To UBound(v)
      If dic.Exists(v(i, 1)) Then
        v(i, 1) = dic(v(i, 1))
      Else
        v(i, 1) = Empty
      End If
    Next
    .Offset(, 1).Value = v '結果をB列に書き込む
   End With
  End With
End Sub

2 hits

【74822】別ファイル間でのVLOOKUPの高速処理方法 びゅう 13/9/20(金) 20:22 質問
【74823】Re:別ファイル間でのVLOOKUPの高速処理方法 kanabun 13/9/20(金) 22:13 発言
【74825】Re:別ファイル間でのVLOOKUPの高速処理方法 びゅう 13/9/21(土) 8:20 お礼
【74824】Re:別ファイル間でのVLOOKUPの高速処理方法 kanabun 13/9/20(金) 23:05 発言
【74826】Re:別ファイル間でのVLOOKUPの高速処理方法 びゅう 13/9/21(土) 8:22 お礼
【74827】Re:別ファイル間でのVLOOKUPの高速処理方法 kanabun 13/9/21(土) 18:52 発言
【74829】Re:別ファイル間でのVLOOKUPの高速処理方法 びゅう 13/9/21(土) 21:51 お礼
【74828】Re:別ファイル間でのVLOOKUPの高速処理方法 γ 13/9/21(土) 19:03 発言
【74830】Re:別ファイル間でのVLOOKUPの高速処理方法 びゅう 13/9/21(土) 21:52 お礼

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