Excel / VBA-在求解器循环中更新SUMPRODUCT(和其他)选择器

时间:2018-08-14 21:28:53

标签: excel vba

我正在用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

0 个答案:

没有答案