ВБА Солвер | Пример корак по корак за употребу Солвера у програму Екцел ВБА
Екцел ВБА Солвер
Како решавате компликоване проблеме? Ако нисте сигурни како се позабавити овим проблемима, онда не брините, у нашем Екцелу имамо решење. У нашем ранијем чланку „Екцел Солвер“ научили смо како да решимо једначине у екцелу. Ако нисте упознати, „СОЛВЕР“ је доступан и са ВБА. У овом чланку ћемо вас провести кроз употребу „Солвера“ у ВБА.
Омогућите Солвер у радном листу
Решивач је скривени алат доступан на картици података у Екцелу (ако је већ омогућен).
Да бисмо прво користили СОЛВЕР у екцелу, морамо омогућити ову опцију. Следите кораке у наставку.
Корак 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.
Ствари које треба запамтити
- Да бисте радили са Солвером у екцелу и ВБА, прво га омогућите за радни лист, а затим омогућите за ВБА референцу.
- Једном када је омогућен на оба радна листа и ВБА, само ми можемо приступити свим функцијама Солвер-а.