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代码打算计算优化成本,然后将优化后的面包车数量和成本输入仪表板。
问题是面包车的数量与优化成本结果不匹配。这意味着我使用购买的面包车数量结果来计算总成本,这并不等于我之前得到的优化成本。是因为函数之间的随机数不能固定吗?有没有更好的方法来生成随机数?你能检查一下我的代码并告诉我问题的原因吗?
亲切的问候
发布于 2014-12-16 02:47:03
每次调用Calculate时,RandBetween都会重新计算,即10,000次。
如果您希望每次调用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。
如果你想要一个floating-point号0 <= n < 2,那就使用Rnd * 2。
a + Rnd * (b - a)是a <= n < b的更一般的情况
https://stackoverflow.com/questions/27453808
复制相似问题