|
いつも拝見させていただいております。
VBAで自分の思う結果は得られるようになったのですが、コードが良くないらしく処理速度に時間がかかり、悩んでいます。
例えば、以下のコードの処理速度を改善するにはどんな方法があるのでしょうか?
内容はA列に0・1・2・・・・200一様に増加する値が、B列には−0.5から205までの値が不等間隔かつ順不同で並んでいます。B列の数字を上から順に読み込んで、A列の連続な2つの値に挟まれたら、その挟んだA列の値の行番号+1をそれぞれC列に返すというものです。
一般的な処理速度完全方法でもいいので教えてくださる方、いましたら教えていただけると幸いです。よろしくお願いいたします。
Sub test()
Dim n, o, m, x, y, i As Double
n = Range("A1").End(xlDown).Row
o = Range("B1").End(xlDown).Row
For m = 1 To o
x = Cells(m, 2)
st1:
For i = 1 To n
If Cells(i, 1) <= x And x <= Cells(i + 1, 1) Then
y = i + 1
GoTo st2
ElseIf Cells(i, 1) > x And x > Cells(i + 1, 1) Then
GoTo st1
ElseIf Cells(1, 1) > x Then
y = 2
GoTo st2
ElseIf Cells(n, 1) < x Then
y = n
GoTo st2
End If
Next
st2:
Cells(m, 3).Value = y
Next
End Sub
|
|