2017-08-15 87 views
0

一中,我創造了一個Excel VBA宏求解模型方程如下:Excel求解VBA

SolverAdd CellRef:="$M$18:$M$30", Relation:=2, FormulaText:="$N$18:$N$30" 

我怎麼能實現它,這樣的行數「18」是一個值可以讀取爲另一個單元格的輸入?例如,單元格A1可能具有值18,這是我想在此方程中使用的值。如果在A1中的值是10,則該方程應讀:

SolverAdd CellRef:="$M$10:$M$30", Relation:=2, FormulaText:="$N$10:$N$30" 

類似地,變量定義:

SolverOk SetCell:="$H$47", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$18:$J$30,$R$18:$R$30", _ 
    Engine:=1, EngineDesc:="Simplex LP" 

同樣,當數量的單元格A1的值從,比如18到10, 變量應該從"$H$18:$J$30,$R$18:$R$30"更改爲"$H$10:$J$30,$R$10:$R$30"

我將不勝感激任何建議。

非常感謝。

+3

您是否嘗試過使用附加組件SolverStudio?這真的很有用。但是,如果你想要有一個變量作爲輸入使用:input_variable = .Cells(1,1)'或'input_variable = Range(「A1」)'並轉換爲'「$ M」&input_variable&「:$ M $ 30' – danieltakeshi

+0

太棒了!謝謝Daniel。 – naren

回答

3
  • 擁有一個變量作爲輸入使用這樣的:input_variable = .Cells(1,1)input_variable = Range("A1")和改變"$M"&input_variable&":$M$30

參考這個問題進行進一步的方法:VBA: Selecting range by variablesRange as a Variable VBA

  • 另一種替代方法是使用SolverStudio,這真的很有用,因爲你使用幾乎所有着名的optmisation庫在Excel中建模。

隨着問題的增加,Excel似乎無法解決一些問題,還有許多其他專業軟件使用這些優化建模語言。

如果您嘗試安裝某些問題可能發生,請輸入以下鏈接以解決:Help Page我的問題有所不同,並已解決here

在我的課上,我被授予了AMPL,所以使用SolverStudio進行編程比Excel VBA更容易,因爲SolverStudio的語言專注於優化問題。

+0

Daniel:太棒了!我不知道SolverStudio,所以我會檢查一下。 – naren