| 
    
     |  | いつも拝見させていただいております。 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
 
 |  |