VBA lahendaja | Samm-sammult näide lahendi kasutamiseks Exceli VBA-s
Exceli VBA lahendaja
Kuidas keerulisi probleeme lahendada? Kui te pole kindel, kuidas nende probleemidega toime tulla, siis pole meie Excelis lahendaja midagi muret. Oma varasemas artiklis “Exceli lahendaja” oleme õppinud, kuidas võrrandeid Excelis lahendada. Kui te pole teadlik, on lahendus „SOLVER” saadaval ka VBA-ga. Selles artiklis tutvustame teile, kuidas VBA-s kasutada lahendust.
Luba töölehel lahendaja
Lahendaja on peidetud tööriist, mis on Exceli andmete vahelehel saadaval (kui see on juba lubatud).
SOLVERi kasutamiseks Excelis peame esmalt selle valiku lubama. Järgige alltoodud samme.
1. samm: minge vahekaardile FILIS. Valige vahekaardil FILI „Suvandid“.
2. samm: valige Exceli suvandite aknas „Lisandmoodulid“.
3. samm: valib allosas valiku „Exceli lisandmoodulid” ja klõpsake nupul „Mine”.
4. samm: märkige nüüd ruut „Lahendaja lisandmoodul” ja klõpsake nuppu OK.
Nüüd peate andmete vahekaardi all nägema lahendajat.
Luba lahendaja VBA-s
Ka VBA-s on Solver väline tööriist, peame võimaldama tal seda kasutada. Selle lubamiseks toimige järgmiselt.
1. samm: minge Visual Basic Editor Editori aknas Tööriistad >>> Viide.
2. samm: valige viidete loendist „Lahendaja“ ja klõpsake selle kasutamiseks nuppu OK.
Nüüd saame lahendust kasutada ka VBA-s.
Lahendaja funktsioonid VBA-s
VBA-koodi kirjutamiseks peame VBA-s kasutama kolme „lahendaja funktsiooni“ ja need funktsioonid on „SolverOk, SolverAdd ja SolverSolve“.
SolverOk
SolverOk (SetCell, MaxMinVal, ValueOf, ByChange, Engine, EngineDesc)
SetCell: see on lahtriviide, mida tuleb muuta, st Profiti lahter.
MaxMinVal: see on valikuline parameeter, allpool on numbrid ja täpsustajad.
- 1 = maksimeeri
- 2 = minimeeri
- 3 = sobib konkreetse väärtusega
ValueOf: See parameeter tuleb esitada, kui MaxMinVal argument on 3.
ByChange: Muutes, milliseid rakke see võrrand tuleb lahendada.
LahendajaLisa
Nüüd vaatame SolverAddi parameetreid
CellRef: probleemi lahendamiseks vajalike kriteeriumide seadmiseks tuleb rakku muuta.
Seos: Kui loogilised väärtused on täidetud, siis saame kasutada järgmisi numbreid.
- 1 on väiksem kui (<=)
- 2 on võrdne (=)
- 3 on suurem kui (> =)
- 4 is peab olema lõplik väärtus, mis on täisarv.
- 5 on väärtused peavad olema vahemikus 0 või 1.
- 6-l peavad olema kõik erinevad väärtused ja täisarvud.
Näide lahendajast Exceli VBA-s
Selle VBA Solver Exceli malli saate alla laadida siit - VBA Solver Exceli mallNäiteks vaadake allolevat stsenaariumi.
Selle tabeli abil peame tuvastama kasumi summa, mis peab olema vähemalt 10000. Selle arvu saamiseks on meil teatud tingimused.
- Müüdavad ühikud peaksid olema täisarv.
- Hind / ühik peaks olema vahemikus 7 kuni 15.
Nende tingimuste põhjal peame tuvastama, mitu ühikut millise hinnaga müüa, et saada 10000 kasumiväärtus.
Ok, lahendame selle võrrandi nüüd.
1. samm: käivitage VBA alamprotseduur.
Kood:
Alamlahendaja_näide () Lõpeta alam
2. samm: Kõigepealt peame määrama lahtrisse Objektiiv, kasutades funktsiooni SolverOk .
Samm 3: Selle funktsiooni esimene argument on „SetCell”, selles näites peame muutma kasumi kasumi ehk B8 lahtri väärtust.
Kood:
Sub Solver_Example () SolverOk SetCell: = Range ("B8") End Sub
4. samm: Nüüd peame selle lahtri väärtuseks määrama 10000, nii et MaxMinVali jaoks kasutage argumendi väärtusena 3.
Kood:
Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3 End Sub
5. samm: järgmine argument ValueOf väärtus peaks olema 10000.
Kood:
Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10000 End Sub
Järgmine argument on ByChange, st muutes lahtrid, mida see võrrand tuleb lahendada. Sel juhul tuleb lahtrite muutmine müüa ühikuteks (B1) ja ühiku hind (B2) muutmiseks.
Kood:
Alamlahendaja_näide () LahendajaKomplekt: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") Lõpp-alam
Märkus: ülejäänud argumente pole siin vaja.
6. samm: kui objektiivrakk on määratud, peame nüüd koostama muud kriteeriumid. Selle avatud funktsiooni „SolverAdd” jaoks.
Samm 7: Esimese Cell Ref peame muutus on ühiku hind raku st B2 raku.
Kood:
Alamlahendaja_näide () LahendajaKomplekt: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Range ("B2") Lõpp-alam
8. samm: selle lahtri väärtus peab olema> = 7, seega on argument Seos 3.
Kood:
Alamlahustaja_näide () SolverOk SetCell: = Vahemik ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Vahemik ("B2"), Seos: = 3 Lõpeta alam
9. samm: selle lahtri väärtus peaks olema> = 7, st valemitekst = 7 .
Kood:
Alamlahustaja_näide () SolverOk SetCell: = Vahemik ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Vahemik ("B2"), Seos: = 3, FormulaText: = 7 lõpp-alam
10. samm: Samamoodi peab sama lahter olema väiksem kui 15, nii et selle seose jaoks on argumendi väärtusena <= st 1.
Kood:
Alamlahustaja_näide () SolverOk SetCell: = Vahemik ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Vahemik ("B2"), Seos: = 3, FormulaText: = 7 SolverAdd CellRef: = Range ("B2"), seos: = 1, FormulaText: = 15 End Sub
11. samm: esimene lahter, st Müüdavad ühikud, peab olema täisarv, selleks seadistage ka järgmised kriteeriumid.
Kood:
Alamlahustaja_näide () SolverOk SetCell: = Vahemik ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Vahemik ("B2"), Seos: = 3, FormulaText: = 7 SolverAdd CellRef: = Vahemik ("B2"), Seos: = 1, FormulaText: = 15 SolverAdd CellRef: = Vahemik ("B1"), Seos: = 4, FormulaText: = "Tervik" Lõpp-alam
12. samm: viimane samm on lisada funktsioon SolverSolve.
Kood:
Alamlahustaja_näide () SolverOk SetCell: = Vahemik ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Vahemik ("B1: B2") SolverAdd CellRef: = Vahemik ("B2"), Seos: = 3, FormulaText: = 7 SolverAdd CellRef: = Vahemik ("B2"), Seos: = 1, FormulaText: = 15 SolverAdd CellRef: = Vahemik ("B1"), Seos: = 4, FormulaText: = "Tervik" SolverSolve End Alam
Ok, käivitage kood, vajutades tulemuse saamiseks klahvi F5.
Koodi käivitamisel näete järgmist akent.
Vajutage Ok ja saate tulemuse Exceli lehele.
Nii et 10000 kasumi teenimiseks peame müüma 5000 ühikut hinnaga 7, kui omahind on 5.
Asjad, mida meeles pidada
- Excelis ja VBA-s lahendiga töötamiseks lubage kõigepealt see töölehe jaoks, seejärel lubage VBA viide.
- Kui see on mõlemal töölehel ja VBA-l lubatud, pääseme kõigile Solveri funktsioonidele juurde ainult meie.