VBA Solver | Halimbawang Hakbang Halimbawa upang magamit ang Solver sa Excel VBA
Excel VBA Solver
Paano mo malulutas ang mga kumplikadong problema? Kung hindi ka sigurado kung paano pumunta tungkol sa mga problemang ito kung gayon wala kang mag-alala mayroon kaming solver sa aming excel. Sa aming naunang artikulong "Excel Solver" natutunan namin kung paano malutas ang mga equation sa excel. Kung hindi mo namamalayan ang "SOLVER" ay magagamit din sa VBA. Sa artikulong ito, dadalhin ka namin sa kung paano gamitin ang "Solver" sa VBA.
Paganahin ang Solver sa Worksheet
Ang isang solver ay isang nakatagong tool na magagamit sa ilalim ng tab ng data sa excel (kung pinagana na).
Upang magamit muna ang SOLVER sa excel kailangan naming paganahin ang pagpipiliang ito. Sundin ang mga hakbang sa ibaba.
Hakbang 1: Pumunta sa tab na FILE. Sa ilalim ng tab na FILE piliin ang "Mga Pagpipilian".
Hakbang 2: Sa window ng Mga Pagpipilian ng Excel piliin ang "Add-Ins".
Hakbang 3: Piliin sa ibaba ang "Excel Add-Ins" at mag-click sa "Go".
Hakbang 4: Ngayon lagyan ng tsek ang kahon na "Solver Add-in" at mag-click sa Ok.
Ngayon ay dapat mong makita ang "Solver" sa ilalim ng tab ng data.
Paganahin ang Solver sa VBA
Sa VBA din, ang Solver ay isang panlabas na tool, kailangan namin itong paganahin upang magamit ito. Sundin ang mga hakbang sa ibaba upang paganahin ito.
Hakbang 1: Pumunta sa Mga Tool >>> Sanggunian sa Window ng Visual Basic Editor.
Hakbang 2: Mula sa listahan ng mga sanggunian, piliin ang "Solver" at mag-click sa Ok upang magamit ito.
Ngayon ay maaari naming gamitin ang Solver sa VBA din.
Mga Pag-andar ng Solver sa VBA
Upang magsulat ng isang VBA code kailangan naming gumamit ng tatlong "Mga Solver Function" sa VBA at ang mga pagpapaandar na iyon ay "SolverOk, SolverAdd, at SolverSolve".
SolverOk
SolverOk (SetCell, MaxMinVal, ValueOf, ByChange, Engine, EngineDesc)
SetCell: Ito ang magiging sanggunian ng cell na kailangang mabago ibig sabihin, Profit cell.
MaxMinVal: Ito ay isang opsyonal na parameter, sa ibaba ay ang mga numero at specifier.
- 1 = I-maximize
- 2 = I-minimize
- 3 = Itugma ang isang tukoy na halaga
ValueOf: Ang parameter na ito ay kailangang magbigay kung ang MaxMinVal ang pagtatalo ay 3.
Sa pamamagitan ng pagbabago: Sa pamamagitan ng pagbabago ng aling mga cell ang kailangang malutas ang equation na ito.
SolverAdd
Tingnan natin ngayon ang mga parameter ng SolverAdd
CellRef: Upang maitakda ang mga pamantayan upang malutas ang problema kung ano ang cell ay kailangang baguhin.
Kaugnay: Sa ito, kung ang mga lohikal na halaga ay nasiyahan sa gayon maaari naming gamitin ang mga numero sa ibaba.
- Ang 1 ay mas mababa sa (<=)
- 2 ay katumbas ng (=)
- 3 ay mas malaki kaysa sa (> =)
- Ang 4 ay dapat magkaroon ng panghuling halaga na mga integer.
- Ang 5 ay dapat mayroong mga halaga sa pagitan ng 0 o 1.
- Ang 6 ay dapat magkaroon ng panghuling halaga na lahat ay magkakaiba at integer.
Halimbawa ng Solver sa Excel VBA
Maaari mong i-download ang VBA Solver Excel Template na ito dito - VBA Solver Excel TemplatePara sa isang halimbawa tingnan ang sitwasyon sa ibaba.
Gamit ang talahanayan na ito kailangan naming kilalanin ang halagang "Kita" na kung saan kailangang maging isang minimum na 10000. Upang makarating sa numerong ito mayroon kaming ilang mga kundisyon.
- Mga Yunit na Ibebenta dapat ay isang halaga ng integer.
- Presyo dapat nasa pagitan ng 7 at 15.
Batay sa mga kundisyong ito kailangan naming kilalanin kung gaano karaming mga yunit ang ibebenta sa anong presyo upang makuha ang kita na halaga ng 10000.
Ok, malutas natin ang equation na ito ngayon.
Hakbang 1: Simulan ang subprocedure ng VBA.
Code:
Sub Solver_Example () Tapusin ang Sub
Hakbang 2: Una kailangan naming itakda ang Sanggunian cell sanggunian sa pamamagitan ng paggamit ng SolverOk pagpapaandar
Hakbang 3: Ang unang argumento ng pagpapaandar na ito ay "SetCell", sa halimbawang ito kailangan nating baguhin ang halaga ng Profit cell ie B8 cell.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8") End Sub
Hakbang 4: Ngayon kailangan naming itakda ang halaga ng cell na ito sa 10000, kaya para sa MaxMinVal gamitin ang 3 bilang halaga ng argument.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3 End Sub
Hakbang 5: Ang susunod na pagtatalo ValueOf ang halaga ay dapat na 10000.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000 End Sub
Ang susunod na argumento ay ByChange ibig sabihin sa pamamagitan ng pagbabago ng aling mga cell ang kinakailangang lutasin ng equation na ito. Sa kasong ito sa pamamagitan ng pagbabago ng Units to Sell (B1) at Price Per Unit (B2) cell ay kailangang mabago.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") End Sub
Tandaan: ang mga natitirang argumento ay hindi kinakailangan dito.
Hakbang 6: Kapag naitakda ang layunin na cell, ngayon kailangan namin upang bumuo ng iba pang mga pamantayan. Para sa bukas na pagpapaandar na "SolverAdd".
Hakbang 7: Una Cell Ref kailangan nating baguhin ay ang Presyo ng bawat Yunit ng cell ie B2 cell.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2") End Sub
Hakbang 8: Ang cell na ito ay kailangang> = 7, kaya ang Kaugnayan ang pagtatalo ay magiging 3.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2"), Kaugnayan: = 3 Wakas Sub
Hakbang 9: Ang halaga ng cell na ito ay dapat na> = 7 ibig sabihin Formula Text = 7.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2"), Kaugnayan: = 3, FormulaText: = 7 End Sub
Hakbang 10: Katulad nito ang parehong cell ay kailangang mas mababa sa 15, kaya para dito ugnayan ay <= ibig sabihin 1 bilang halaga ng argument.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2"), Kaugnayan: = 3, FormulaText: = 7 SolverAdd CellRef: = Saklaw ("B2"), Kaugnay: = 1, FormulaText: = 15 End Sub
Hakbang 11: Ang unang cell ibig sabihin ang Mga Yunit na Ibenta ay dapat na isang halaga ng Integer para sa set up na rin nito ng mga pamantayan tulad ng sa ibaba.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2"), Kaugnayan: = 3, FormulaText: = 7 SolverAdd CellRef: = Saklaw ("B2"), Kaugnay: = 1, FormulaText: = 15 SolverAdd CellRef: = Saklaw ("B1"), Kaugnay: = 4, FormulaText: = "Integer" End Sub
Hakbang 12: Isang pangwakas na hakbang na kailangan namin upang idagdag ang pagpapaandar ng SolverSolve.
Code:
Sub Solver_Example () SolverOk SetCell: = Saklaw ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Saklaw ("B1: B2") SolverAdd CellRef: = Saklaw ("B2"), Kaugnayan: = 3, FormulaText: = 7 SolverAdd CellRef: = Saklaw ("B2"), Kaugnay: = 1, FormulaText: = 15 SolverAdd CellRef: = Saklaw ("B1"), Kaugnay: = 4, FormulaText: = "Integer" SolverSolve End Sub
Ok, patakbuhin ang code sa pamamagitan ng pagpindot sa F5 key upang makuha ang resulta.
Kapag pinatakbo mo ang code makikita mo ang sumusunod na window.
Pindutin ang Ok at makukuha mo ang resulta sa isang excel sheet.
Kaya upang kumita ng kita na 10000, kailangan nating ibenta ang 5000 mga yunit sa 7 bawat presyo kung saan ang presyo ng gastos ay 5.
Bagay na dapat alalahanin
- Upang gumana sa Solver sa excel & VBA, una, paganahin ito para sa worksheet, pagkatapos ay paganahin para sa sanggunian ng VBA.
- Sa sandaling ito ay pinagana sa parehong mga worksheet at VBA pagkatapos lamang na ma-access natin ang lahat ng mga pagpapaandar ng Solver.