下面是使用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