VBA规划求解.pdf
《VBA规划求解.pdf》由会员分享,可在线阅读,更多相关《VBA规划求解.pdf(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Microsoft Excel 规划求解的说明Microsoft Excel 规划求解是 Microsoft Excel 的外接程序 Microsoft Excel 规划求解将帮助您确定在Microsoft Excel 工作表上的特定目标单元格公式的最优值。可以通过使用Microsoft Visual Basic 应用程序(VBA)宏自动执行创建和 Microsoft Excel 规划求解模型的操作。本文介绍如何使用 Microsoft Excel 97 中的 Microsoft Excel 规划求解函数使用 VBA 宏语言。本文假定您熟悉 VBA 语言和 Microsoft Visual B
2、asic 编辑器的 Microsoft Excel 97。在这篇文章中使用的示例是可供下载在下面的 Microsoft 网站:http:/ 您还可以使用宏和 Microsoft Excel 版本 5.0 和 7.0 中的这篇文章中描述的示例。如何使用 VBA 宏中的 Microsoft Excel 规划求解函数若要在 VBA 宏使用 Microsoft Excel 规划求解加载项函数,必须引用该加载项从包含该宏的工作簿的VBA 项目。如果您不引用 Microsoft Excel 规划求解加载项在您尝试运行该宏时将会收到以下编译错误:编译错误:子或函数未定义。若要引用 Microsoft Exc
3、el 规划求解加载宏的工作簿中的宏,请使用以下步骤:1.打开工作簿。2.在 工具 菜单上指向宏,然后单击Visual Basic 编辑器。3.在 工具 菜单上单击引用。4.在 可用引用列表中单击以选中Solver.xls复选框,然后单击确定。注意 如果看不 Solver.xls 在 可用引用列表中单击浏览。添加引用对话框中定位和选择 Solver.xla 文件,然后单击打开。通常,是 FilesMicrosoft OfficeOfficeLibrarySolver 子文件夹中找到 Solver.xla 文件。您已准备好要在 VBA 宏使用 Microsoft Excel 规划求解函数。设计 V
4、BA 宏,解决简单的 Microsoft Excel 规划求解模型尽管 Microsoft Excel 规划求解提供了许多功能,下面的三个函数都是基本创建,并解决模型:zSolverOK函数zSolverSolve函数zSolverFinish函数1.SolverOK 函数SolverOK函数定义了一个基本的 Microsoft Excel 规划求解模型。SolverOK函数通常是您将使用生成您的 Microsoft Excel 规划求解模型的第一个函数。SolverOK函数等同于单击规划求解的 工具 菜单,然后再指定是在规划求解参数选项对话框。以下是SolverOK函数语法:SolverOK
5、(SetCell,MaxMinVal,ValueOf,ByChange)以下信息描述了SolverOK函数语法:zSetCell指定目标单元格。zMaxMinVal对应于您是否想要解决目标单元格的最大值(1)、最小值 (2)或一个特定的值 (3)。zValueOf指定目标单元格相匹配的值。如果将MaxMinVal设置为3,您必须指定此参数。如果设置为 1 或 2 MaxMinVal,您可以忽略此参数。zByChange指定单元格将被更改的单元格的区域。2.SolverSolve 函数SolverSolve函数求解该模型,使用SolverOK函数使用指定的参数。执行SolverSolve函数等同
6、于单击 求解规划求解参数对话框中。以下是SolverSolve函数语法:SolverSolve(UserFinish,ShowRef)以下信息描述了SolverSolve函数语法:zUserFinish指明是否希望在用户完成解决模型。若要返回的结果而不显示该规划求解结果对话框框中,此参数设置为 TRUE。要返回的结果,并显示规划求解结果对话框将此参数设置为 FALSE zShowRef标识 Microsoft Excel 规划求解返回一种中间解决方案时所调用的宏。仅当 TRUE StepThru SolverOptions函数的参数传递时,应使用ShowRef参数。3.SolverFinish
7、 函数SolverFinish函数指示如何处理该的结果,哪种类型的报表,以创建解决方案过程完成后。以下是SolverFinish函数语法:SolverFinish(KeepFinal、ReportArray)以下信息描述了SolverFinish函数语法:zKeepFinal表示应采取的操作的最终结果。如果KeepFinal为 1,最终解决方案值保留在不断变化的单元格中替换值。如果KeepFinal是 2,最终解决方案值将被丢弃,并还原以前的值。zReportArray指定指示当达到该解决方案时,Microsoft Excel 将创建的报告类型的数组。如果ReportArray被设置为1,Mi
8、crosoft Excel 将创建一个应答报告。如果设置为2,Microsoft Excel 将创建一个敏感度报告并设为3,如果 Microsoft Excel 将创建一个限制报表。有关这些的报告请参阅How to generate reports for solutions部分的详细信息。下图是Microsoft Excel 规划求解结果与SolverFinish参数相关联的选项下面的代码描述Find_Square_Root2宏:Sub Find_Square_Root2()Dim val Dim sqroot Request the value for which you want to
9、obtain the square root.val=Application.InputBox(_ prompt:=Please enter the value for which you want&_ to find the square root:,Type:=1)使用 InputBox函数,则Find_Square_Root2宏会提示您输入您想要解决的目标单元格的值。Set up the parameters for the model.SolverOK SetCell:=Range(A2),MaxMinVal:=3,ValueOf:=val,_ ByChange:=Range(A1)D
10、o not display the Solver Results dialog box.SolverSolve UserFinish:=True Save the value of cell A1(the changing cell)before you discard the results.sqroot=Range(a1)Finish and discard the results.SolverFinish KeepFinal:=2 Show the result in a message box.MsgBox The square root of&val&is&Format(sqroot
11、,0.00)End Sub 如何在循环宏使用 Microsoft ExcelSolver 函数在很多的情况下它是一个好主意,则 Microsoft Excel 规划求解后解决了目标单元格的多个值。您通常可以使用 VBA 的循环结构之一完成此操作。Create_Square_Root_Table宏 演 示 Microsoft Excel 规 划 求 解 中 循 环 宏 的 工 作 方 式。Create_Square_Root_Table宏创建的新工作表中的一个表。它通过 10 和每个数字的平方根相应插入一个数字。Create_Square_Root_Table宏创建使用For循环来循环访问数字
12、1 到 10,并解决目标单元格的值相匹配的迭代数方形根模型中的表。下面的代码描述Create_Square_Root_Table宏:Sub Create_Square_Root_Table()Add a new worksheet to the workbook.Set w=Worksheets.Add Put the value 2 in cell C1 and the formula=C12 in cell C2.w.Range(C1).Value=2 w.Range(C2).Formula=C12 A loop that will make 10 iterations,starting
13、with the number 1,and finishing at the number 10.For i=1 To 10 Set the Solver parameters that indicate that Solver should solve the cell C2 for the value of i(where i is the number of the iteration)by changing cell C1.SolverOk SetCell:=Range(C2),ByChange:=Range(C1),_ MaxMinVal:=3,ValueOf:=i Do not d
14、isplay the Solver Results dialog box.SolverSolve UserFinish:=True Save the value of i in column A and the results of the changing cell in column B.w.Cells(i,1)=i w.Cells(i,2)=Range(C1)Finish and discard the final results.SolverFinish KeepFinal:=2 Next Clear the range C1:C2 w.Range(C1:C2).Clear End S
15、ub 如何使用约束约束是一个或多个单元格的内容限制。一个模型可以有一个或多个约束。约束集是一套不等式或 equalities 从解决方案中移除某些决策变量的值的组合的一组。例如对于约束可能需要一个单元格是大于零,并且另一个单元格只能包含一个整数值。我们已经讨论到目前为止该正方形根模型是一个简单的模型不包含任何约束。下图说明了使用约束的模型。此模型的目的是要查找的产品的最佳组合的最大利润。您实现目标方面所起的作用是找到最大利润(单元格 G14)。您将更改以查找最大利润的值是在生成的单位数。范围 G9:G11 表示在此模型中的可变单元格。您唯一的约束条件是您使用的部分数不能超过您手边有的部分数。与
16、 Microsoft Excel 规划求解该约束显示为E3:E7 =B3:B7。如果您要构建此 Microsoft Excel 规划求解模型以交互方式,Microsoft Excel 规划求解参数可能会类似于下图中的这些。削弱利润率模型与混合使用产品的 Microsoft Excel 规划求解参数您将使用一个新函数SolverAdd函数的中,除了前面描述的 Microsoft Excel 规划求解 VBA 函数。SolverAdd函数将约束添加到模型中。执行 SolverAdd函数等同于单击规划求解参数对话框中的添加 按钮。SolverAdd函数的语法如下:SolverAdd(CellRef、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 规划 求解
限制150内