如何通过VBA宏实现Excel Solver批量迭代完成椭球距离反算
Excel Solver 批量求解修改方案
前置配置
使用VBA调用Solver前需要先添加引用:
- 按下
Alt+F11打开VBA编辑器 - 点击顶部菜单栏「工具」→「引用」
- 在可用引用列表中找到「Solver」,勾选后点击确定即可
修改后代码
Sub SolverLoop() ' 可自行调整下方的起始行、结束行参数 Const START_ROW As Long = 2 ' 假设第1行是表头,数据从第2行开始 Const END_ROW As Long = 10000 ' 最多处理到第10000行 Dim i As Long ' 循环遍历每一行 For i = START_ROW To END_ROW ' 跳过L列为空的行,避免无目标值报错 If Cells(i, "L").Value <> "" Then ' 配置当前行的Solver参数 SolverOk SetCell:="$K$" & i, _ MaxMinVal:=3, _ ValueOf:=Cells(i, "L").Value, _ ByChange:="$H$" & i, _ Engine:=1, _ EngineDesc:="GRG Nonlinear" ' 执行求解,自动接受结果不弹窗 SolverSolve UserFinish:=True ' 保存求解结果到单元格 SolverFinish KeepFinal:=1 End If Next i End Sub
注意事项
- 运行代码前请先备份原始数据,避免H列原有值被覆盖后无法恢复
- 如果存在求解不收敛的行,可自行在代码中添加错误处理逻辑跳过异常行
- 10000行数据求解耗时较长,运行过程中请勿操作Excel表格
- 可根据实际数据行数调整
START_ROW和END_ROW的数值,减少不必要的运行时间
问题示意

内容的提问来源于stack exchange,提问作者NorthSon
相关产品推荐
相关产品推荐

