|
私が一番活用しているマクロですが、処理数を増やしたら、すごく処理が遅くなりました。
原始的なコードを書くのが好き(というよりそれしか書けない)なのですが、これじゃあ実用に耐えません。
1.処理速度を上げるには、どう変更したら良いのでしょうか?
2.処理数が50,000個だとPCが固まってしまいます。
遅いのは分かるのですが、固まるという現象はどうして起きるのでしょうか?
****************************
アクティブセルと同じ値のセルを、アクティブセルの3つ左の列から探し出し、探しだしたセルの右にある値をアクティブセルの右に書き出すマクロです。
Sub データ取得1個()
Dim Count, aaa As Long
Set ACELL = ActiveCell '検索元
Set BCELL = ActiveCell.Offset(0, -3) '検索先
aaa = 50000 ’←処理数が2000ならまったく問題ない。
Count = 0
Count1 = 0
Do Until Count1 = aaa '検索元を100行実行
Do Until Count = aaa 'データベース(検索先)を100行検索
If ACELL = BCELL Then '見つかった場合
ACELL.Offset(0, 1) = BCELL.Offset(0, 1) 'データの書き込み
Count = 0 '検索先のデータ検索数
Exit Do
Else '見つからなかった場合
Set BCELL = BCELL.Offset(1, 0) '検索先を次に変更
Count = Count + 1 '検索先のデータ検索数
End If
Loop
Set ACELL = ACELL.Offset(1, 0)
Set BCELL = ActiveCell.Offset(0, -3)
Count1 = Count1 + 1 '検索元のデータ検索数
Count = 0
Loop
MsgBox aaa & "個処理が終了しました。"
End Sub
|
|