下面是使用Excel的求解器插件根据单元格A2(对于X)和B2(对于Y)中函数的变量在单元格C2中查找函数的“0”值的子模块。如果C2设置正确,则更改A2或B2将更改C2中的值(您需要让C2实际上依赖于A2和/或B2,并且A2和B2必须是独立的)。
要安装插件,请确保您转至文件 - >选项 - >加载项 - >管理,并确保已选中求解器。接下来,打开VBA编辑器(Alt + F11),选择工具 - >参考并搜索求解器(对我来说,它大约是8下来,并没有被选中)。选中此框以使用VBA代码中的参考。
Sub findZero()
'
' users solver to find the 0 point of a multi-variable function in cell C2 with variables in cell A2 & B2
'
SolverOk SetCell:="C2", MaxMinVal:=5, ValueOf:=0, ByChange:="A2:B2", Engine:=1, EngineDesc:="GRG Nonlinear"
'Following from http://stackoverflow.com/questions/3984584/catch-max-time-iteration-dialog-box-when-using-excel-solver-in-vba/4049124#4049124
Results = SolverSolve(True, "SolverIteration")
Select Case Results
Case 0, 1, 2
' solution found, keep final values
SolverFinish KeepFinal:=1
Case 4
'Target does not converge
'Your code here
Case 5
'Solver could not find a feasible solution
'Your code here
Case Else
'Your code
End Select
End Sub
您可以使用内置的求解器加载项(Excel-> Options-> Addins-> Manage Addins-> Solver)。您可能需要根据当前的VBA设置启用参考。 – Michael 2014-11-05 05:15:35
如果我使用解算器,代码将会是什么样子? (以X,Y,A,B和f表示) – 2014-11-05 05:16:59
不用看现在的实际电子表格就可以说。你可能不会有A&B,因为这些只是X和Y变量的初始值;所以你会有X,Y和F。我会把这个公式放在你的电子表格中,所以改变X或者Y会改变f,然后使用Macro录制器来查看录制的解算器代码的外观和修改。 – Michael 2014-11-05 05:19:11