我正在用Excel编写一个程序,该程序试图通过将变量X(其值与要求和的每个值绑定在一起)限制在特定阈值以下,以最大化一组值的总和。它必须在66个数据集(跨66列)中执行此操作。
我不太了解如何将列偏移量应用于在VBA提示符或规划求解选择中看到的SUMPRODUCT
。基本上,我需要了解如何在VBA中进行编码,以使Explanatory pic of what I need VBA to do each iteration每次迭代将SUMPRODUCT
中的选择向右偏移一行。我也有一个类似的问题,在右边迭代求解程序选择单元格,我不太了解所需的语法。例如:SolverAdd CellRef:="$C$28:$C$38"
,因此下一次迭代将被解释为SolverAdd CellRed:="$D$28:$D$28"
,依此类推。
到目前为止,我的代码看起来像这样!我知道我需要在包含SUMPRODUCT
的行中使用“ i”添加迭代,但是在解释SUMPRODUCT
括号内的所有内容以及添加位置时遇到了麻烦“水平一”偏移量。
让我知道我是否忘了在这里包括明显的内容:)
预先感谢
保罗
For i = 0 To 66 ' PesticideMacro Macro '
SolverReset
Range("N5").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(RC[-4]:R[10]C[-4],R[23]C[-11]:R[33]C[-11])"
Range("O5").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(R[41]C[-12]:R[51]C[-12],R[23]C[-12]:R[33]C[-12])/SUMPRODUCT(RC[-5]:R[10]C[-5],R[23]C[-12]:R[33]C[-12])*1000000"
Range("C27").Offset(0, i).Select
Selection.Copy
Range("P5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
SolverAdd CellRef:="$C$28:$C$38", Relation:=5
SolverAdd CellRef:="$O$5", Relation:=1, FormulaText:="$P$5"
SolverOk SetCell:="$N$5", MaxMinVal:=1, ValueOf:=0, ByChange:="$C$28:$C$38", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve (True)
SolverSolve userFinish:=True
SolverFinish KeepFinal:=1
Next i
End Sub