Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


70280 / 76738 ←次へ | 前へ→

【10968】処理速度の向上について
質問  K.C  - 04/2/19(木) 23:17 -

引用なし
パスワード
   いつも拝見させていただいております。
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

0 hits

【10968】処理速度の向上について K.C 04/2/19(木) 23:17 質問
【10969】Re:処理速度の向上について りん 04/2/20(金) 7:49 発言
【10970】Re:処理速度の向上について ichinose 04/2/20(金) 8:02 発言
【10982】Re:処理速度の向上について Hirofumi 04/2/21(土) 17:57 回答
【10986】質問と別解 Hirofumi 04/2/21(土) 21:40 回答
【10988】Re:処理速度の向上について K.C 04/2/22(日) 0:46 お礼

70280 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free