VBA sprendėjas | Žingsnis po žingsnio „Solver“ naudojimo „Excel VBA“ pavyzdys

„Excel VBA Solver“

Kaip išspręsti sudėtingas problemas? Jei nesate tikri, kaip spręsti šias problemas, tada nieko nerimauti turime mūsų „Excel“ sprendėjas. Ankstesniame straipsnyje „Excel Solver“ sužinojome, kaip „Excel“ spręsti lygtis. Jei nežinote, „SOLVER“ galima įsigyti ir su VBA. Šiame straipsnyje mes jums paaiškinsime, kaip naudoti „Sprendėją“ VBA.

Įgalinti „Solver“ darbalapyje

Sprendėjas yra paslėptas įrankis, pasiekiamas duomenų skirtuke „Excel“ (jei jis jau įgalintas).

Norėdami pirmiausia naudoti „SOLVER“ programoje „Excel“, turime įgalinti šią parinktį. Atlikite toliau nurodytus veiksmus.

1 žingsnis: Eikite į skirtuką Failas. Skirtuke FILE pasirinkite „Options“.

2 žingsnis: „Excel“ parinkčių lange pasirinkite „Priedai“.

3 žingsnis: Apačioje pasirenkate „Excel Add-Ins“ ir spustelėkite „Go“.

4 žingsnis: Dabar pažymėkite laukelį „Solver Add-in“ ir spustelėkite Gerai.

Dabar duomenų skirtuke turite pamatyti „Sprendėjas“.

Įjunkite „Solver“ VBA

VBA sistemoje „Solver“ yra išorinis įrankis, turime įgalinti jį jį naudoti. Norėdami jį įjungti, atlikite toliau nurodytus veiksmus.

1 žingsnis: „Visual Basic“ redaktoriaus lange eikite į Įrankiai >>> Nuoroda.

2 žingsnis: Iš nuorodų sąrašo pasirinkite „Sprendėjas“ ir spustelėkite Gerai, jei norite jį naudoti.

Dabar „Solver“ galime naudoti ir VBA.

Sprendėjo funkcijos VBA

Norėdami parašyti VBA kodą, VBA turime naudoti tris „Solver Functions“ ir šios funkcijos yra „SolverOk, SolverAdd ir SolverSolve“.

„SolverOk“

„SolverOk“ („SetCell“, „MaxMinVal“, „ValueOf“, „ByChange“, variklis, „EngineDesc“)

„SetCell“: Tai bus langelio nuoroda, kurią reikia pakeisti, ty Pelno langelis.

„MaxMinVal“: tai neprivalomas parametras, žemiau pateikiami skaičiai ir specifikatoriai.

  • 1 = padidinti
  • 2 = sumažinti
  • 3 = sutampa su konkrečia verte

„ValueOf“: Šis parametras turi būti pateiktas, jei „ MaxMinVal“ argumentas yra 3.

„ByChange“: keisdami, kurias ląsteles reikia išspręsti šią lygtį.

Pridėti

Dabar pažiūrėkime „ SolverAdd “ parametrus

„CellRef“: norėdami nustatyti problemos sprendimo kriterijus, reikia pakeisti langelį.

Santykis: Jei tenkinamos loginės vertės, galime naudoti žemiau pateiktus skaičius.

  • 1 yra mažesnis nei (<=)
  • 2 yra lygus (=)
  • 3 yra didesnis nei (> =)
  • 4 is turi turėti galutines vertes, kurios yra sveiki skaičiai.
  • 5 is vertės turi būti nuo 0 iki 1.
  • 6 is turi turėti visas skirtingas galutines reikšmes ir sveikus skaičius.

„Excel VBA“ sprendėjo pavyzdys

Šį „VBA Solver Excel“ šabloną galite atsisiųsti čia - „VBA Solver Excel“ šablonas

Pavyzdžiui, pažvelkite į toliau pateiktą scenarijų.

Naudodamiesi šia lentele turime nustatyti pelno sumą, kuri turi būti mažiausiai 10000. Norėdami pasiekti šį skaičių, turime tam tikras sąlygas.

  • Vienetai, kuriuos reikia parduoti, turėtų būti sveikojo skaičiaus vertė.
  • Kaina / vienetas turėtų būti nuo 7 iki 15.

Remiantis šiomis sąlygomis, turime nustatyti, kiek vienetų parduoti už kokią kainą, kad gautume 10000 pelno vertę.

Gerai, spręskime šią lygtį dabar.

1 veiksmas: pradėkite VBA antrinę procedūrą.

Kodas:

 Sub Solver_Pavyzdys () End Sub 

2 žingsnis: Pirmiausia turime nustatyti „Objective cell“ nuorodą naudodami „ SolverOk“ funkciją.

3 žingsnis: Pirmasis šios funkcijos argumentas yra „SetCell“, šiame pavyzdyje turime pakeisti pelno langelio, ty B8 langelio, vertę.

Kodas:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8") End Sub 

4 žingsnis: Dabar turime nustatyti šios langelio vertę į 10000, taigi „ MaxMinVal“ naudokite 3 kaip argumento vertę.

Kodas:

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

5 žingsnis: Kitas argumentas „ ValueOf“ reikšmė turėtų būti 10000.

Kodas:

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

Kitas argumentas yra „ByChange“, ty keičiant langelius, kuriuos reikia išspręsti. Tokiu atveju langelius reikia pakeisti pakeičiant vienetus į pardavimą (B1) ir vieneto kainą (B2).

Kodas:

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

Pastaba: likusių argumentų čia nereikia.

6 žingsnis: Nustačius tikslo langelį, dabar turime sukonstruoti kitus kriterijus. Šiai atvirai „SolverAdd“ funkcijai.

7 žingsnis: Pirmoji langelio nuoroda, kurią turime pakeisti, yra langelio kaina už langelį, ty B2 langelis.

Kodas:

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

8 veiksmas: šiai langelei turi būti> = 7, todėl argumentas Ryšys bus 3.

Kodas:

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

9 žingsnis: ši langelio vertė turėtų būti> = 7, ty „ Formulės tekstas“ = 7 .

Kodas:

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

10 žingsnis: Panašiai ta pati ląstelė turi būti mažesnė nei 15, taigi šiam ryšiui argumento reikšmė yra <= ty 1.

Kodas:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10000, ByChange: = Range ("B1: B2") SolverAdd CellRef: = Range ("B2"), Relation: = 3, „FormulaText“: = 7 „Solver“ Pridėti „CellRef“: = diapazonas („B2“), ryšys: = 1, „FormulaText“: = 15 pabaigos antrinis 

11 žingsnis: Pirmoji langelis, ty Parduoti vienetai, turi būti sveikoji vertė, taip nustatydami toliau nurodytus kriterijus.

Kodas:

 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“: = Diapazonas („B2“), Santykis: = 1, „FormulaText“: = 15 „SolverAdd“ „CellRef“: = Diapazonas („B1“), Santykis: = 4, „FormulaText“: = „Sveikasis skaičius“ Pabaiga Sub 

12 žingsnis: Paskutinis žingsnis, kurį turime pridėti „SolverSolve“ funkciją.

Kodas:

 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: = Diapazonas ("B2"), Santykis: = 1, FormulaText: = 15 SolverAdd CellRef: = Diapazonas ("B1"), Santykis: = 4, FormulaText: = "Sveikasis skaičius" SolverSolve End Sub 

Gerai, paleiskite kodą paspausdami klavišą F5, kad gautumėte rezultatą.

Kai paleisite kodą, pamatysite šį langą.

Paspauskite Gerai ir rezultatą gausite „Excel“ lape.

Taigi, norėdami uždirbti 10000 pelno, turime parduoti 5000 vienetų už 7 už kainą, kai savikaina yra 5.

Ką reikia atsiminti

  • Norėdami dirbti su „Excel“ ir „VBA“ sprendėju, pirmiausia įgalinkite jį darbalapyje, tada įgalinkite VBA nuorodą.
  • Kai jis bus įjungtas abiejuose darbalapiuose ir VBA, tik mes galėsime pasiekti visas „Solver“ funkcijas.

$config[zx-auto] not found$config[zx-overlay] not found