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

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

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

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

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

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

Корак 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.

Шифра:

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

Следећи аргумент је БиЦханге, тј. Променом ћелија које ове једначине треба решити. У овом случају променом ћелије „Јединице у продају“ (Б1) и „Цена по јединици“ (Б2) потребно је променити.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") Енд Суб 

Напомена: овде нису потребни преостали аргументи.

Корак 6: Једном када је циљна ћелија постављена, сада морамо да конструишемо друге критеријуме. За ову отворену функцију „СолверАдд“.

Корак 7: Први Целл Реф морамо да променимо је Цена по јединици ћелије тј. Б2 ћелија.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2") Енд Суб 

Корак 8: Ова ћелија мора бити> = 7, тако да Однос аргумент ће бити 3.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 3 Крај Суб 

Корак 9: Ова вредност ћелије треба да буде> = 7 тј. Текст формуле = 7.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 3, ФормулаТект: = 7 Крај Суб 

Корак 10: Слично томе, иста ћелија мора бити мања од 15, па за ово однос је <= тј. 1 као вредност аргумента.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 3, ФормулаТект: = 7 СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 1, ФормулаТект: = 15 Енд Суб 

Корак 11: Прва ћелија, тј. Јединице за продају морају бити целобројна вредност, а за ово се постављају критеријуми као у наставку.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 3, ФормулаТект: = 7 СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 1, ФормулаТект: = 15 СолверАдд ЦеллРеф: = Ранге ("Б1"), Релатион: = 4, ФормулаТект: = "Интегер" Енд Суб 

Корак 12: Последњи корак треба да додамо функцију СолверСолве.

Шифра:

 Суб Солвер_Екампле () СолверОк СетЦелл: = Ранге ("Б8"), МакМинВал: = 3, ВалуеОф: = 10000, БиЦханге: = Ранге ("Б1: Б2") СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 3, ФормулаТект: = 7 СолверАдд ЦеллРеф: = Ранге ("Б2"), Релатион: = 1, ФормулаТект: = 15 СолверАдд ЦеллРеф: = Ранге ("Б1"), Релатион: = 4, ФормулаТект: = "Интегер" СолверСолве Енд Суб 

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

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

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

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

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

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