返回列表 上一主題 發帖

[發問] 迴圈

[發問] 迴圈

請教各位大大~~

我現在有一個值要跟另一個值比較,
假設 A 值輸入之後,會產出 B 值~~~
但是最終結果 A 要相近於 B,也就是迴圈計算~~

但是我好像不能用
  1.   With Sheet8
  2.   If .Range("r21").Value < .Range("x21").Value Then
  3.   .Range("r21").Value + 1
  4.   End If
  5. End With
複製代碼
那個加號好像不允許~~~那我還有其他方法嗎?

感謝大大們!

好像試出來了
  1.   With Sheet8
  2.   Do While .Range("r21") < .Range("x21")
  3.   .Range("r21") = .Range("r21") + 1
  4.   Loop
  5.   
複製代碼
但是運算好慢~~~

TOP

回復 2# bowwow1975


    從代碼看改這樣會不會比較快
   A<B+1 則為B-1 否則為A
    跳過中間的慢慢+1
字典兩各字 還真難理解

TOP

回復  bowwow1975


    從代碼看改這樣會不會比較快
   A
freeffly 發表於 2013-1-31 11:26



    剛剛想了想這樣與你的答案有差距
   不過從這各方向應該會很接近你要的
   就是跳過慢慢+1的方式
   現在正再撈系統資料等一下再幫你試
   給你一個方向
   B跟A的差距取整數直接加應該就比你迴圈快
字典兩各字 還真難理解

TOP

回復 2# bowwow1975
你要的結果是這樣嗎
這樣應該就不會很久
  1. Sub EE()
  2.     If [r1] < [x1] Then
  3.         [r1] = [r1] + Application.RoundUp([x1] - [r1], 0)
  4.     End If



  5. End Sub
複製代碼
字典兩各字 還真難理解

TOP

回復 5# freeffly

果然算很快,但是值超出太多了~~

一般一開始的時候 r1 =65000, x1 =100000
最後負迴授後兩者都會會平穩在 93300 左右!

但是你的方法 r1 超出了 100000,來到 11185,x1 則是 86295..........

雖然我不太懂你的程式,但我想可能需要改一些值微調~~~~
可是,我不會調................

TOP

回復 6# bowwow1975
  1.   If .Range("r21") < .Range("x21") Then
  2.         .Range("r21") = .Range("r21") + Application.RoundUp((.Range("x21") - .Range("r21")) / 1.6538, 0)
  3.     End If
複製代碼
改為這樣就比較好了~~~~但是,除以 1.6538 的值就會有點 case by case!

TOP

回復 6# bowwow1975
你應該把你回授相關的式子列出來
就是r1 , x1 是怎麼到 93300 的

TOP

回復 6# bowwow1975


    我是依你一開始發問的去弄的
   不過看你後面改的就不知道你要的是什麼了
   同樣由A走到B
    可以走直線是最好的
   可以用跳一步就到更好
字典兩各字 還真難理解

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題