2015-06-24 55 views
0

我在Excel 2013中運行了一個宏,該算法爲30行使用求解器爲每行(每行一個帳戶)。VBA忽略Excel求解器中參考單元的約束

  • B列是我的帳戶名稱。
  • C欄爲「總成本」。
  • E欄是低成本僱員人數。
  • 列F是中等成本員工數量。
  • G列是高成本僱員人數。
  • H列是「每名員工的低成本」。
  • 第一欄是「每位員工的中等成本」。
  • J欄是「每位員工的高成本」。
  • K列是(E:G,H:J)的副產品。
  • 列L在列C和列K之間存在差異。在求解器中,這是通過更改I和J所需列的設置爲0的目標單元格。

我有兩個約束:

  1. 我必須大於或等於J.
  2. ħ必須大於或等於I.

*注意使得h = C -sum(I,J)所以它不是一個獨立變量。

問題1的第約束:我在我的代碼:

SolverAdd CellRef:=Range("I" & RowCount), _ 
     Relation:=3, _ 
     FormulaText:=Range("J" & RowCount) 

*請注意,我試着用搜索引擎formulaText但似乎我發現那些只有它等同於價值。我不想要一個價值。我希望它引用一個單元格。但我一直在忽略的代碼。結果會顯示J大於I.我該如何解決這個問題?

問題2.運行

SolverAdd CellRef:=Range("H" & RowCount), _ 
      Relation:=3, _ 
      FormulaText:=Range("I" & RowCount) 

時,我不斷收到錯誤,我不知道爲什麼它會失敗。是因爲H是指方程而不是空白單元?如果是這樣,有沒有辦法解決它?

謝謝。

回答

0

你有沒有進一步與此?

這似乎爲我工作好,雖然我在H的硬編碼的值對您有所幫助

SolverReset 

SolverOk SetCell:="$L$3", MaxMinVal:=3, ValueOf:=0, ByChange:="$I$3:$J$3", _ 
    Engine:=1, EngineDesc:="GRG Nonlinear" 

SolverAdd CellRef:="$H$3", Relation:=3, FormulaText:="$I$3" 

SolverAdd CellRef:="$I$3", Relation:=3, FormulaText:="$J$3" 

SolverSolve 
+0

您好感謝。如果它只有一排,它似乎工作正常。我有近3000行,所以我使用VBA逐行去解決它。這就是爲什麼我使用Range(「J」&RowCount)來測試它,但它仍然不起作用。 – Alice

+0

如果它在一個工作,那麼你應該基本上在那裏。也許不是'範圍...'只是使用'&RowCount'? –