|
こちらで50000行の「適当な」テスト環境を作るのは困難なので、全部数値を使って
やってみました。空白シートで、以下の2つのマクロを試してみて下さい。
(RANDBETWEEN関数を使えるようにするには「ツール」「アドイン」で"分析ツール"
にチェックを付けて下さい)
Sub DataFind_Test()
Dim Sta As Single, En As Single
With Range("A1:D50000")
.Formula = "=RANDBETWEEN(1,5000)"
.Columns(3).ClearContents
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
Sta = Timer
On Error Resume Next
With Range("F1:F50000")
.Formula = "=VLOOKUP($D1,$A$1:$B$50000,2,FALSE)"
.SpecialCells(3, 16).ClearContents
.Copy
.PasteSpecial xlPasteValues
End With
Range("E:E").Delete xlShiftToLeft
On Error GoTo 0
Application.CutCopyMode = False
En = Timer
MsgBox En - Sta
End Sub
Sub DataFind_Test2()
Dim Sta As Single, En As Single
With Range("A1:D50000")
.Formula = "=RANDBETWEEN(1,5000)"
.Columns(3).ClearContents
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
Sta = Timer
On Error Resume Next
With Range("F1:F50000")
.Formula = "=VLOOKUP($D1,$A$1:$B$50000,2,FALSE)"
With .SpecialCells(3, 1)
.Offset(, -1).Value = .Value
End With
.ClearContents
End With
On Error GoTo 0
En = Timer
MsgBox En - Sta
End Sub
テスト環境を作っている部分のコードは、処理時間の計測から除外しています。
こちらの結果は、2つとも40秒前後で出来ました。ちなみにマシンスペックは
AMD:Athlon1800+(1.53Ghz), 256Mb, ExcelのVersionは 2000 です。
|
|