【问题标题】:How to repeat Excel solver in several rows using VBA?如何使用 VBA 在多行中重复 Excel 求解器?
【发布时间】:2015-05-15 17:05:35
【问题描述】:

所以这是一个非常标准的 VBA 请求(发现有点像搜索堆栈溢出,但不完全是)。

我有一个想要求解的基本求解器方程,但需要在单列中求解 100 行。我正在尝试让求解器:

  1. 将单元格 S5 定位为值 = 1
  2. 通过更改单元格 T5
  3. 在 U5 中输出
  4. 对目标 S6 一直执行此操作,更改 T6,输出 U6; S7、T7 和 U7... 等到 S100、T100 和 U100。

这是一个简单的功能,但我似乎无法让它工作。现在代码(粘贴在末尾)一直输出 S5 到 T5 的解决方案,一直到 U 列。所以它只是重申了 U5、U6、U7 等中的 S5 到 T5 解决方案。

如果有人可以提供帮助--我认为这只是一个小调整?--我真的很感激!

Sub macrorepeatsolve()

Dim myR
Dim c
Set myR = Range("T5", "T100")
For Each c In myR
    SolverOk SetCell:="S5", MaxMinVal:=3, ValueOf:=1, ByChange:="T5"
    SolverSolve userfinish:=True
    c.Offset(0, 1).Value = Cells(5, "T").Value

Next
End Sub

对不起,我是个白痴!将不胜感激任何帮助!

最好,

【问题讨论】:

  • 使用 c.row 而不是到处硬编码 5
  • 谢谢!完美运行。

标签: excel vba loops solver


【解决方案1】:

Sub macrorepeatsolve()

Dim count as Integer
Set count=5
Do While count<=100
    SolverOk SetCell:=Sheets("sheetname").Cells(count,19), MaxMinVal:=3, ValueOf:=1, ByChange:=Sheets("sheetname").Cells(count,20)
    SolverSolve userfinish:=True
    Sheets("sheetname").Cells(count,21).Value = Sheets("sheetname").Cells(count,20).Value
    count=count+1
Loop
End Sub

尝试使用更像这样的东西。在这种格式中,变量count 将允许您动态更改受影响的单元格

【讨论】:

  • 嗯,这种格式肯定更好。但是代码似乎没有根据我的选择运行。
  • 我不确定你的意思是让它不参考你的选择运行。您的意思是它没有参考 S5、T5、U5 运行,或者它没有脱离您当前的选择? (虽然我认为这一点没有实际意义,因为它给了您似乎可以解决您的问题的建议:P)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多