|
▼カド さん:
こんにちは。
>私のコードで3.5分、Nedさんのコードで5秒でした。
そんなに変わりましたか。とりあえず良かったですね^ ^
再度チューニングすると
Dim a As Single, b As Single
Dim ACELL, CCELL, vc
Dim i3 As Long, i1 As Long
Dim r As Range
Dim AAA() As String '書き出し用配列をString型に。
a = Timer
Set r = ActiveCell
With r.Offset(, -3)
ACELL = Range(.Cells, .End(xlDown).Offset(, 1)).Value
End With
With Range(r, r.End(xlDown))
CCELL = .Value
ReDim AAA(1 To UBound(CCELL), 1 To 1)
For Each vc In CCELL
i3 = i3 + 1
For i1 = 1 To UBound(ACELL)
If vc Like ACELL(i1, 1) Then
AAA(i3, 1) = ACELL(i1, 2)
Exit For
End If
Next i1
Next vc
With .Offset(, 1)
.ClearContents
.Value = AAA
End With
End With
b = Timer
Set r = Nothing
Debug.Print b - a
な感じでしょうか。
先日から高速化についてのご質問が多いようなので、参考サイトをご紹介しておきます。
http://www.officetanaka.net/excel/vba/speed/index.htm
http://www.bcap.co.jp/hanafusa/VBHLP/sonota_no1.htm
定番化してますので、既知であればごめんなさい。
|
|