excel - Excel/VBA - 在求解器循环中更新 SUMPRODUCT(和其他)选择器
问题描述
我正在 Excel 中编写一个程序,该程序试图最大化一组值的总和,通过将变量 X(其值与每个被求和的值相关联)限制在特定阈值下。它必须对 66 个数据集(跨 66 列)执行此操作。
我不太明白如何将列偏移应用到SUMPRODUCT
我在 VBA 提示或 Solver 选择中看到的。基本上,我需要了解如何在 VBA 中编写代码,以便在每次迭代时将选择向右偏移SUMPRODUCT
一行。我需要 VBA 进行每次迭代的解释性图片。我在向右迭代 Solver 选择单元格时也有类似的问题,我不太了解所需的语法。例如: SolverAdd CellRef:="$C$28:$C$38"
,下一次迭代将被解释为SolverAdd CellRed:="$D$28:$D$28"
,依此类推。
到目前为止,我的代码看起来像这样!我知道我需要使用 'i' 将迭代添加到包含 的行中SUMPRODUCT
,但是我无法解释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
解决方案
推荐阅读
- appkit - 出现查找弹出框时调用 NSTextView textDidEndEditing
- android - React Native:非法节点 ID 设置为 Animated.Multiply 的输入
- react-native - 尝试动态设置 viewBox 宽度/高度
- java - 存储xy坐标的最佳做法?double[] 数组还是创建一个坐标类?
- python - Jupyter notebook & 'git' 未被识别为内部或外部命令、可运行程序或批处理文件
- jenkins - 作业导入插件不导入文件夹
- javascript - 为什么标签中包含 Angular 文件?
- python - 如何在数据框中查找和分组相似的术语以求和它们的值?
- excel - VBA选择单元格并将其复制到txt文件中
- python-3.x - M2Crypto.SMIME.PKCS7_Error:标签错误