VBAの配列について質問があります。
処理速度のバラツキがあり、教えてほしいです。
Dictionaryオブジェクトを使ってVLOOKUPみたいな割り付けをしています。
2つのシートがあります。
『抽出結果』シートと『条件』シートです。
『条件』シートのA列、B列にデータが入っています。
『抽出結果』シートのA列にデータが入っています。
やりたいことは、
『抽出結果』シートのA列に『条件』シートのA列のデータが一致したら
『条件』シートのB列のデータを『抽出結果』シートのB列に記載する。
コードを書いてみました。
Public Sub dic_03() Dim mydic As Object, mykey Dim c, myval Dim i As Long Application.ScreenUpdating = False Application.EnableEvents = False Set mydic = CreateObject("Scripting.Dictionary") With Sheets("条件") For i = 2 To 6000 If Not mydic.exists(.Cells(i, 1).Value) Then mydic.Add .Cells(i, 1).Value, .Cells(i, 2).Value End If Next i End With With Sheets("抽出結果") For i = 2 To 180000 .Cells(i, 2).Value = mydic.Item(.Cells(i, 1).Value) Next i End With Set mydic = Nothing Application.EnableEvents = True Application.ScreenUpdating = True MsgBox ("終了しました") End Sub
処理は正しくできるのですが、20秒くらいで終了する時のあれば、1分以上かかる時もあります。
処理しているパソコンは同じパソコンで、他に開いているファイルもありません。
配列の初期化のコードなど入れた方が良いのでしょうか?
教えて下さい。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/01 00:22