excel规划求解结合vba宏笔记

目录

概念与配置

规划求解定义

excel设置规划求解

宏的基本操作

excel批量进行规划求解案例

加载规划求解模块

宏的设置

宏录制vba

其他案例


概念与配置

规划求解定义

运用"规划求解"定义并求解问题 - Microsoft 支持

excel设置规划求解

EXCEL规划求解的简明教程 - 知乎 (zhihu.com)

excel中的批量操作可以使用vba宏来进行操作

宏的基本操作

Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)_excel vba-CSDN博客

复杂的宏可以使用宏录制

Excel 宏教程:录制宏基础 - 懒人Excel (lanrenexcel.com)

使用宏录制器自动执行任务 - Microsoft 支持

excel批量进行规划求解案例

批量处理通常可以使用vba进行编写来实现,通过宏录制结合gpt可以 实现零基础实现复杂的批处理。

加载规划求解模块

通过设置进行规划求解

宏的设置

然后就可以编写了

宏录制vba

自行设置

然后进行规划求解

输入你的约束函数等信息

完成后点击停止录制

就可以看到我们宏录制的vba了

运行代码前需要引入

然后通过gpt进行修改完善

例如我的vba

先随机初始化

复制代码
Sub FillRandomNumbers()
    Dim rng As Range
    Dim cell As Range
    Dim minValue As Double
    Dim maxValue As Double
    
    ' 设置随机数的最小值和最大值
    minValue = 0#
    maxValue = 120#
    
    ' 设置要填充随机数的范围
    Set rng = Range("B2:E89")
    
    ' 遍历每个单元格并填充随机数
    For Each cell In rng
        cell.Value = minValue + (maxValue - minValue) * Rnd
    Next cell
End Sub

Sub OptimizeRows()
    Dim i As Integer

    
    For i = 223 To 224
        ' 设置 Solver 参数
        SolverOk SetCell:="$I$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:="$B$" & i & ":$E$" & i, _
            Engine:=1, EngineDesc:="GRG Nonlinear"
        
        ' 添加 Solver 约束
        SolverAdd CellRef:="$B$" & i & ":$E$" & i, Relation:=1, FormulaText:="100"
        SolverAdd CellRef:="$H$" & i, Relation:=1, FormulaText:="8"
        SolverAdd CellRef:="$H$" & i, Relation:=3, FormulaText:="4"
        
        ' 求解
        SolverSolve
        
        ' 重置 Solver
        SolverReset
    Next i
End Sub

' 重置 Solver
SolverReset

重点注意这个,会重置规划求解。 不然每次都会添加你的约束条件

相当于下图的全部重置

这段VBA代码用于在Excel中利用求解器(Solver)解决优化问题。以下是每部分的解释:

  1. Dim i As Integer : 声明一个整型变量 i,用于循环控制。

  2. For i = 27 To 224: 启动一个循环,从第27行到第224行逐行处理。

  3. SolverOk SetCell:="$I$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:="$B$" & i & ":$E$" & i, Engine:=1, EngineDesc:="GRG Nonlinear": 设置求解器的目标单元格为第i行的I列,优化目标为该单元格的值为0,允许更改B列到E列的单元格,使用"GRG Nonlinear"求解引擎。

  4. SolverAdd CellRef:="$B$" & i & ":$E$" & i, Relation:=1, FormulaText:="100": 为第i行的B列到E列单元格设置一个约束条件,要求这些单元格的值不超过100。

  5. SolverAdd CellRef:="$H$" & i, Relation:=1, FormulaText:="8": 为第i行的H列单元格设置一个约束条件,要求该单元格的值不超过8。

  6. SolverAdd CellRef:="$H$" & i, Relation:=3, FormulaText:="4": 为第i行的H列单元格设置另一个约束条件,要求该单元格的值至少为4。

  7. SolverSolve: 执行求解器计算以找到满足所有约束条件的最优解。

  8. Next i: 结束当前循环,继续到下一行。

这样,代码会对每一行应用相同的求解器设置和约束条件,并寻找每一行的最优解。

其他案例

Excel规划求解的vba调用_规划求解 vba-CSDN博客

相关推荐
YJlio10 小时前
Windows Internals 读书笔记 10.3.3:Task Scheduler 架构详解
人工智能·windows·笔记·python·学习·chatgpt·架构
Lhan.zzZ10 小时前
笔记_2026.4.28_003
c++·笔记·qt·opencv
YaBingSec10 小时前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
曾凡玉@11 小时前
Python 并发编程系统笔记
开发语言·笔记·python
Hello_Embed11 小时前
【无标题】
网络·笔记·网络协议·tcp/ip·嵌入式
小陈phd11 小时前
多模态大模型学习笔记(三十八)——传统OCR技术机制:从DBNet到CRNN:吃透传统OCR两阶段范式的底层逻辑
笔记·学习·ocr
zhangrelay11 小时前
三分钟云课实践速通--工程制图基础-3D--FreeCAD
笔记·学习·3d
kobesdu12 小时前
【ROS2实战笔记-13】Foxglove Studio:ROS可视化工具的另一条路
笔记·机器人·自动驾驶·ros
The_superstar612 小时前
2026.4.28衡山派学习复习笔记
笔记·学习
随风,奔跑12 小时前
Git学习笔记
笔记·git·学习