簡體   English   中英

EXCEL 求解器自動化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM