VBA解算器|在Excel VBA中使用求解器的分步示例

Excel VBA解算器

您如何解决复杂的问题?如果您不确定如何解决这些问题,那么不用担心,我们的Excel中有求解器。在我们较早的文章“ Excel解算器”中,我们学习了如何在excel中求解方程。如果您不知道,VBA也可以使用“ SOLVER”。在本文中,我们将指导您如何在VBA中使用“ Solver”。

在工作表中启用求解器

求解器是excel中“数据”选项卡下可用的隐藏工具(如果已启用)。

要先在excel中使用SOLVER,我们需要启用此选项。请遵循以下步骤。

步骤1: 转到“文件”选项卡。在“文件”选项卡下,选择“选项”。

第2步: 在“ Excel选项”窗口中,选择“加载项”。

第三步: 在底部选择“ Excel加载项”,然后单击“转到”。

第4步: 现在,选中“ Solver加载项”框,然后单击“确定”。

现在,您必须在“数据”标签下看到“求解器”。

在VBA中启用求解器

在VBA中,Solver也是一个外部工具,我们需要启用它才能使用它。请按照以下步骤启用它。

步骤1: 在Visual Basic编辑器窗口中转到工具>>>参考。

第2步: 从参考列表中,选择“ Solver”,然后单击“确定”以使用它。

现在我们也可以在VBA中使用规划求解。

VBA中的求解器功能

要编写VBA代码,我们需要在VBA中使用三个“ Solver函数”,而这些函数是“ SolverOk,SolverAdd和SolverSolve”。

求解器

SolverOk(SetCell,MaxMinVal,ValueOf,ByChange,Engine,EngineDesc)

SetCell: 这将是需要更改的单元格引用,即“利润”单元格。

MaxMinVal: 这是一个可选参数,下面是数字和说明符。

  • 1 =最大化
  • 2 =最小化
  • 3 =匹配特定值

的价值: 如果 最大最小值 参数是3。

更改: 通过更改哪些单元格,需要解决该方程式。

求解器添加

现在让我们来看一下 求解器添加

CellRef: 要设置解决问题的标准,需要更改什么单元。

关系: 在这种情况下,如果满足逻辑值,则可以使用以下数字。

  • 1小于(<=)
  • 2等于(=)
  • 3大于(> =)
  • 4是必须具有为整数的最终值。
  • 5必须具有介于0或1之间的值。
  • 6是必须具有所有不同且为整数的最终值。

Excel VBA中的求解器示例

您可以在此处下载此VBA Solver Excel模板– VBA Solver Excel模板

例如,请看以下情形。

使用此表,我们需要确定“利润”量,该量必须至少为10000。要达到此数字,我们需要满足一定的条件。

  • 销售单位 应该是一个整数值。
  • 价格单位 应该在7到15之间。

根据这些条件,我们需要确定以多少价格出售多少个单位才能获得10000的利润值。

好的,让我们现在解决这个问题。

步骤1: 启动VBA子过程。

代码:

 Sub Solver_Example()结束Sub 

第2步: 首先,我们需要使用 求解器 功能。

第三步: 此函数的第一个参数是“ SetCell”,在此示例中,我们需要更改Profit单元(即B8单元)的值。

代码:

 Sub Solver_Example()SolverOk SetCell:= Range(“ B8”)End Sub 

第4步: 现在我们需要将此单元格值设置为10000,因此 最大最小值 使用3作为参数值。

代码:

 Sub Solver_Example()SolverOk SetCell:= Range(“ B8”),MaxMinVal:= 3 End Sub 

步骤5: 下一个论点 的价值 值应为10000。

代码:

 Sub Solver_Example()SolverOk SetCell:= Range(“ B8”),MaxMinVal:= 3,ValueOf:= 10000 End Sub 

下一个参数是ByChange,即通过更改需要求解此方程的单元格。在这种情况下,需要更改销售单位(B1)和每单位价格(B2)的单元格。

代码:

 Sub Solver_Example()SolverOk SetCell:= Range(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:= Range(“ B1:B2”)End Sub 

注意:此处不需要其余参数。

步骤6: 设置目标单元后,现在我们需要构建其他条件。为此打开“ SolverAdd”功能。

步骤7: 第一的 单元格引用 我们需要更改的是“每单位价格”单元格,即B2单元格。

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”)结束 

步骤8: 该单元格必须为> = 7,因此 关系 参数将为3。

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”),关系:= 3结束子 

步骤9: 此单元格值应> = 7,即 公式文字= 7.

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”),关系:= 3,FormulaText:= 7结束子 

步骤10: 同样,同一单元格必须小于15,因此 关系 是<=即1作为参数值。

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”),关系:= 3,FormulaText:= 7 SolverAdd CellRef:= Range(“ B2”),关系:= 1,FormulaText:= 15 End Sub 

步骤11: 为此,第一个单元格(即要销售的单位)必须是整数值,并且还要设置以下条件。

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”),关系:= 3,FormulaText:= 7 SolverAdd CellRef:= Range(“ B2”),关联:= 1,FormulaText:= 15 SolverAdd CellRef:= Range(“ B1”),关联:= 4,FormulaText:=“ Integer” End Sub 

步骤12: 最后一步,我们需要添加SolverSolve函数。

代码:

 子Solver_Example()SolverOk SetCell:=范围(“ B8”),MaxMinVal:= 3,ValueOf:= 10000,ByChange:=范围(“ B1:B2”)SolverAdd CellRef:=范围(“ B2”),关系:= 3,FormulaText:= 7 SolverAdd CellRef:= Range(“ B2”),关系:= 1,FormulaText:= 15 SolverAdd CellRef:= Range(“ B1”),Relation:= 4,FormulaText:=“ Integer” SolverSolve End子 

好的,通过按F5键运行代码以获取结果。

运行代码时,您将看到以下窗口。

按确定,您将在excel表中获得结果。

因此,要赚取10000的利润,我们需要以成本价为5的价格每7个价格卖出5000个单位。

要记住的事情

  • 要在excel&VBA中与Solver一起使用,请首先为工作表启用它,然后为VBA参考启用。
  • 一旦在工作表和VBA上都启用了此功能,则只有我们可以访问所有规划求解功能。