[英]EXCEL Solver automation
我正在使用 Excel Solver 來最小化基於 4 個變量的成本。
關鍵是求解器一次可以解決一個目標單元格,但我需要為多個供應商處理 250 個項目。 我試圖總結所有價格,但求解器僅限於 200 個變量,並且執行它需要很長時間。
我的問題是:如何使用宏自動化求解器?
我的數據組織如下:
價格:A 列到 D 列 數量限制:E 列 數量:F 到 I 列 需求(取決於數量):J 列 總價格(最小化):K 列
我嘗試為 1 項獲取以下宏代碼:
SolverOk SetCell:="$K$13", MaxMinVal:=2, ValueOf:=0, ByChange:="$F$13:$I$13", _
Engine:=2, EngineDesc:="Simplex LP"
SolverAdd CellRef:="$F$13:$I$13", Relation:=4, FormulaText:="integer"
SolverOk
SolverAdd CellRef:="$F$13:$I$13", Relation:=3, FormulaText:="0"
SolverOk
SolverAdd CellRef:="$J$13", Relation:=3, FormulaText:="$E$13"
SolverOk
SolverSolve
SolverOk
SolverDelete CellRef:="$F$13:$I$13", Relation:=4
SolverDelete CellRef:="$F$13:$I$13", Relation:=3, FormulaText:="0"
SolverDelete CellRef:="$J$13", Relation:=3, FormulaText:="$E$13"
End Sub
我需要你的幫助來自動化這個從第 7 行到第 257 行的代碼。
謝謝
大衛
我認為您真正要問的問題是如何在 vba 中創建一個循環。 對於初學者來說,“for 循環”是最簡單的。 開始你的代碼:
for i = 7 to 257
把你想重復的代碼放在這里……你想改變的東西,參考“i”
例如,此行不會引用第 13 行,因為它在這里: SolverAdd CellRef:="$F$13:$I$13", Relation:=4, FormulaText:="integer"
而是指第 i 行,如此處所示
SolverAdd CellRef:="$F$" & i & ":$I$" & i, Relation:=4, FormulaText:="integer"
等等。 為你想要改變的事情做這件事。 並以此結束你的循環:
Next
讓我知道這是否有幫助。
For row = 1 To 10
For col = 1 To 7
SolverReset
SolverOptions Precision:=0.001
SolverOK SetCell:="INDEX(ObjFn," & row & "," & col & ")", _
MaxMinVal:=3, _
ValueOf:=0, _
ByChange:="INDEX(ByChanging," & row & "," & col & ")"
solverResult = Application.Run("SolverSolve", True)
Next col
Next row
這里 ObjFn 是 excel 上的一個命名范圍,而 ByChanging 是另一個命名范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.