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 Template

Para 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.