2014-12-12 97 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)