ВБА Солвер - Пример корак по корак за употребу Солвера у програму Екцел ВБА

Преглед садржаја

Екцел ВБА Солвер

Како решавате компликоване проблеме? Ако нисте сигурни како се позабавити овим проблемима, онда не брините, у нашем Екцелу имамо решење. У нашем ранијем чланку „Екцел Солвер“ научили смо како да решимо једначине у екцелу. Ако нисте свесни, „СОЛВЕР“ је доступан и са ВБА. У овом чланку ћемо вас провести кроз употребу „Солвера“ у ВБА.

Омогућите Солвер у радном листу

Решивач је скривени алат доступан на картици података у Екцелу (ако је већ омогућен).

Да бисмо прво користили СОЛВЕР у екцелу, морамо да омогућимо ову опцију. Следите кораке у наставку.

Корак 1: Идите на картицу ФИЛЕ. На картици ФИЛЕ одаберите „Оптионс“.

Корак 2: У прозору програма Екцел Оптионс одаберите „Адд-Инс“.

Корак 3: На дну одабирете „Додаци за Екцел“ и кликните на „Иди“.

Корак 4: Сада означите поље „Додатак за решавање“ и кликните на, Ок.

Сада на картици са подацима морате видети „Солвер“.

Омогући Солвер у ВБА

И у ВБА, Солвер је спољни алат; морамо да му омогућимо да га користи. Следите кораке у наставку да бисте га омогућили.

Корак 1: Идите на Алатке >>> Референца у прозору Висуал Басиц Едитор.

Корак 2: На листи референци одаберите „Решивач“ и кликните на У реду да бисте је користили.

Сада Солвер можемо користити и у ВБА.

Функције решавања у ВБА

Да бисмо написали ВБА код, морамо да користимо три „функције решавача“ у ВБА, а те функције су „СолверОк, СолверАдд и СолверСолве“.

СолверОк

СолверОк (СетЦелл, МакМинВал, ВалуеОф, БиЦханге, Енгине, ЕнгинеДесц)

СетЦелл: Ово ће бити референца ћелије коју треба променити, тј. Профит ћелија.

МакМинВал: Ово је опционални параметар, испод су бројеви и спецификатори.

  • 1 = Увећај
  • 2 = Умањи
  • 3 = Подударање одређене вредности

ВалуеОф: Овај параметар треба да наведе ако је аргумент МакМинВал 3.

БиЦханге: Променом којих ћелија треба решити ову једначину.

СолверАдд

Сада да видимо параметре СолверАдд-а

ЦеллРеф: Да бисте поставили критеријуме за решавање проблема, потребно је променити шта је ћелија.

Веза: У овом случају, ако су логичке вредности задовољене, онда можемо користити доње бројеве.

  • 1 је мање од (<=)
  • 2 је једнако (=)
  • 3 је веће од (> =)
  • 4 мора имати коначне вредности које су цели бројеви.
  • 5 мора имати вредности између 0 или 1.
  • 6 мора имати коначне вредности које се разликују и целе бројеве.

Пример решења у програму Екцел ВБА

За пример погледајте следећи сценарио.

Користећи ову табелу, морамо да идентификујемо износ „добити“, који мора бити најмање 10000. Да бисмо дошли до овог броја, имамо одређене услове.

  • Јединице за продају треба да буду целобројне вредности.
  • Цена / јединица треба да буде између 7 и 15.

На основу ових услова морамо идентификовати колико јединица продати по којој цени да бисмо добили вредност добити од 10000.

Ок, решимо сада ову једначину.

Корак 1: Покрените ВБА потпроцедуру.

Шифра:

Суб Солвер_Екампле () Крај Суб

Корак 2: Прво морамо поставити референцу на ћелију Објецтиве помоћу функције СолверОк .

Корак 3: Први аргумент ове функције је „СетЦелл“, у овом примеру морамо променити вредност профитне ћелије, односно Б8 ћелије.

Шифра:

Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8") Енд Суб

Корак 4: Сада треба да поставимо ову вредност ћелије на 10000, тако да за МакМинВал користимо 3 као вредност аргумента.

Шифра:

Суб Солвер_Екампле () СолверОк СетЦелл: = Домет ("Б8"), МакМинВал: = 3 Крај Суб

Корак 5: Следећи аргумент ВалуеОф вредности треба да буде 10000.

Шифра:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000 End Sub

The next argument is ByChange i.e. by changing which cells this equation needs to be solved. In this case by changing Units to Sell (B1) and Price Per Unit (B2) cell needs to be changed.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") End Sub

Note: remaining arguments are not required here.

Step 6: Once the objective cell is set, now we need to construct other criteria’s. For this open “SolverAdd” function.

Step 7: First Cell Ref we need to change is Price Per Unit cell i.e. B2 cell.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2") End Sub

Step 8: This cell needs to be>= 7, so the Relation argument will be 3.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3 End Sub

Step 9: This cell value should be>=7 i.e. Formula Text = 7.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 End Sub

Step 10: Similarly the same cell needs to be less than 15, so for this relation is <= i.e. 1 as the argument value.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 End Sub

Step 11: First cell i.e. Units to Sell must be an Integer value for this also set up the criteria as below.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 SolverAdd CellRef:=Range("B1"), Relation:=4, FormulaText:="Integer" End Sub

Step 12: In one final step, we need to add the SolverSolve function.

Code:

Sub Solver_Example() SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000, ByChange:=Range("B1:B2") SolverAdd CellRef:=Range("B2"), Relation:=3, FormulaText:=7 SolverAdd CellRef:=Range("B2"), Relation:=1, FormulaText:=15 SolverAdd CellRef:=Range("B1"), Relation:=4, FormulaText:="Integer" SolverSolve End Sub

Ок, покрените код притиском на тастер Ф5 да бисте добили резултат.

Када покренете код, видећете следећи прозор.

Притисните Ок и добићете резултат у екцел листу.

Дакле, да бисмо остварили профит од 10000, морамо продати 5000 јединица по 7 по цени где је цена коштања 5.

Ствари које треба запамтити

  • Да бисте радили са Солвером у екцелу и ВБА, прво га омогућите за радни лист, а затим омогућите за ВБА референцу.
  • Једном када је омогућен на оба радна листа и ВБА, само ми можемо приступити свим функцијама Солвер-а.

Занимљиви Чланци...