Ši pamoka parodys, kaip naudoti „Solver“ priedą VBA.
„Solver“ yra priedas, pateikiamas kartu su „Excel“ ir naudojamas „kas būtų, jei“ analizei atlikti, pateikiant alternatyvius atsakymus į formulę ląstelėje, remiantis vertėmis, kurias galite perduoti formulei iš kitų jūsų darbaknygės langelių.
„Solver“ priedo įgalinimas „Excel“
Pasirinkite Failas „Excel“ juostelėje, tada eikite žemyn į Galimybės.
Pasirinkite Papildiniai ir spustelėkite ant Eik mygtuką šalia „Excel“ priedų.
Įsitikinkite, kad „Solver“ priedas pasirinkta parinktis.
Arba spustelėkite „Excel“ priedai ant Programuotojas juostelę, kad atidarytumėte dialogo langą Priedai.
„Solver Add-in“ įgalinimas VBA
Įgalinę „Solver“ priedą „Excel“, turite pridėti nuorodą į jį savo VBA projekte, kad galėtumėte jį naudoti VBA.
Įsitikinkite, kad esate spustelėję VBA projekte, kuriame norite naudoti „Solver“. Spustelėkite Įrankių meniu ir tada toliau Nuorodos.
Nuoroda į „Solver“ priedas bus pridėtas prie jūsų projekto.
Dabar galite naudoti VBA kodo „Solver Add-in“!
Sprendimo funkcijų naudojimas VBA
Norėdami naudoti „Solver“ VBA, turime naudoti 3 „Solver VBA“ funkcijas. Šitie yra „SolverOK“, „SolverAdd“, ir SolverSolve.
„SolverOK“
- „SetCell“ - neprivaloma - tai turi būti nuoroda į langelį, kurį reikia pakeisti - jame turi būti formulė. Tai atitinkaNustatykite tikslinį langelį dėžutėSprendimo parametrai dialogo langas.
- „MaxMinVal“ - neprivaloma - Tai galite nustatyti kaip 1 (padidinti), 2 (sumažinti) arba 3. Tai atitinka Maks, Min, irVertė parinktysSprendimo parametrai dialogo langas.
- Vertė - neprivaloma -Jei „MaxMinValue“ nustatyta į 3, turite pateikti šį argumentą.
- ByChange - neprivaloma -Tai nurodo sprendėjui, kurias ląsteles jis gali pakeisti, kad pasiektų reikiamą vertę. Tai atitinkaKeičiant kintamas ląsteles dėžutėSprendimo parametrai dialogo langas.
- Variklis - neprivaloma - tai nurodo sprendimo metodą, kurį reikia naudoti norint rasti sprendimą. 1 - „Simplex LP“ metodas, 2 - GRG netiesinis metodas arba 3 - evoliucinis metodas. Tai atitinkaPasirinkite sprendimo būdą išskleidžiamajame sąrašeSprendimo parametrai dialogo langas
- VariklisDesc - neprivaloma -tai yra alternatyvus sprendimo metodo pasirinkimo būdas - čia įvedate eilutes „Simplex LP“, „GRG Netiesinis“ arba „Evoliucinis“. Tai taip pat atitinkaPasirinkite sprendimo būdą išskleidžiamajame sąrašeSprendimo parametrai dialogo langas
SolverAdd
- CellRef - reikalaujama - tai nuoroda į langelį arba ląstelių diapazoną, kurie turi būti pakeisti, kad būtų išspręsta problema.
- Santykiai - reikalaujama - tai sveikasis skaičius, kuris turi būti nuo 1 iki 6 ir nurodo leidžiamą loginį ryšį.
- 1 yra mažesnis nei (<=)
- 2 yra lygus (=)
- 3 yra didesnis nei (> =)
- 4 turi turėti galutines reikšmes, kurios yra sveikieji skaičiai.
- 5 turi turėti reikšmes tarp 0 arba 1.
- 6 turi turėti galutines reikšmes, kurios yra skirtingos ir sveikos.
- „FormulaText“ - neprivaloma - Dešinė suvaržymo pusė.
Sprendėjo pavyzdžio kūrimas
Apsvarstykite šį darbalapį.
Aukščiau esančiame lape turime atsiriboti nuo pirmojo mėnesio, nustatydami langelį B14 į nulį, pakeisdami kriterijus ląstelėse F1 – F6.
123 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Variklis: = 1, EngineDesc: = "GRG netiesinis"Pabaiga Sub |
Nustatę „SolverOK“ parametrus, turite pridėti keletą kriterijų apribojimų.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Variklis: = 1, EngineDesc: = "GRG netiesinis"Pridėti kriterijus - F3 negali būti mažesnis nei 8SolverAdd CellRef: = "$ F $ 3", Santykis: = 3, FormulaText: = "8"Pridėti kriterijus - F3 negali būti mažesnis nei 5000SolverAdd CellRef: = "$ F $ 5", Santykis: = 3, FormulaText: = "5000"Pabaiga Sub |
Nustatę „SolverOK“ ir „SolverAdd“ (jei reikia), galite išspręsti problemą.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Variklis: = 1, EngineDesc: = "GRG netiesinis"„pridėti kriterijus - F3 negali būti mažesnis nei 8 SolverAdd CellRef: =" $ F $ 3 ", Santykis: = 3, FormulaText: =" 8 "" pridėti kriterijus - F3 negali būti mažesnis nei 5000SolverAdd CellRef: = "$ F $ 5", Santykis: = 3, FormulaText: = "5000"“Raskite sprendimą, išspręsdami problemąSolverSolvePabaiga Sub |
Kai paleisite kodą, ekrane pasirodys šis langas. Pasirinkite norimą parinktį (ty Išsaugoti sprendinį arba Atkurti pradines vertes) ir spustelėkite Gerai.