Board logo

標題: [發問] 迴圈 [打印本頁]

作者: bowwow1975    時間: 2013-1-31 10:21     標題: 迴圈

請教各位大大~~

我現在有一個值要跟另一個值比較,
假設 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
複製代碼
那個加號好像不允許~~~那我還有其他方法嗎?

感謝大大們!
作者: bowwow1975    時間: 2013-1-31 10:52

好像試出來了
  1.   With Sheet8
  2.   Do While .Range("r21") < .Range("x21")
  3.   .Range("r21") = .Range("r21") + 1
  4.   Loop
  5.   
複製代碼
但是運算好慢~~~
作者: freeffly    時間: 2013-1-31 11:26

回復 2# bowwow1975


    從代碼看改這樣會不會比較快
   A<B+1 則為B-1 否則為A
    跳過中間的慢慢+1
作者: freeffly    時間: 2013-1-31 11:32

回復  bowwow1975


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



    剛剛想了想這樣與你的答案有差距
   不過從這各方向應該會很接近你要的
   就是跳過慢慢+1的方式
   現在正再撈系統資料等一下再幫你試
   給你一個方向
   B跟A的差距取整數直接加應該就比你迴圈快
作者: freeffly    時間: 2013-1-31 11:50

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



  5. End Sub
複製代碼

作者: bowwow1975    時間: 2013-1-31 14:35

回復 5# freeffly

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

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

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

雖然我不太懂你的程式,但我想可能需要改一些值微調~~~~
可是,我不會調................
作者: bowwow1975    時間: 2013-1-31 14:45

回復 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!
作者: stillfish00    時間: 2013-2-1 09:27

回復 6# bowwow1975
你應該把你回授相關的式子列出來
就是r1 , x1 是怎麼到 93300 的
作者: freeffly    時間: 2013-2-1 10:21

回復 6# bowwow1975


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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)