2014-12-12 65 views
0
Sub MinimumCost() 
Range("TotalCost_D").ClearContents 

Range("MinimumCost").Value = 100000000 
Dim i As Integer 

Range("PurchasedVans_M").Formula = "=Randbetween(0,2)" 

For i = 1 To 10000 

Calculate 

If Range("TotalCost").Value < Range("MinimumCost").Value Then 
Range("MinimumCost").Value = Range("TotalCost").Value 
    Range("TotalCost_D") = Range("MinimumCost") 
    Range("PurchasedVans").Value = Range("PurchasedVans_M").Value 

    End If 
Next i 
End Sub 

該代碼旨在計算優化成本,然後將麪包車和成本的優化數量輸入儀表板。複製粘貼隨機數結果

問題是貨車的數量與優化成本結果不匹配。這意味着我使用購買的結果數量來計算總成本,這與我之前獲得的優化成本不相等。 是因爲函數間的隨機無法修復? 是否有更好的方法來產生隨機數? 你能檢查我的代碼並告訴我問題的原因嗎?

親切的問候

回答

0

RANDBETWEEN將重新計算每次調用計算,即10000倍的時間。

如果你希望它是計算每個呼叫MinimumCost只需一次,然後用值替換公式:

Range("PurchasedVans_M").Value = Int(Rnd * 3) 

的Excel函數RandBetween(a,b)相當於VBA Int(a + Rnd * (b - a + 1))

注意RANDBETWEEN (0,2)返回一個整數 0,1或2。

如果希望浮點數數字0 <= n < 2然後使用Rnd * 2

更一般的情況下a <= n < b將是a + Rnd * (b - a)