Řešitel VBA | Krok za krokem příklad použití Řešitele v aplikaci Excel VBA

Řešitel aplikace Excel VBA

Jak řešíte složité problémy? Pokud si nejste jisti, jak tyto problémy řešit, pak se nemusíte bát, že máme řešitele v naší aplikaci Excel. V našem dřívějším článku „Řešitel aplikace Excel“ jsme se naučili, jak řešit rovnice v aplikaci Excel. Pokud nevíte, „SOLVER“ je k dispozici také pro VBA. V tomto článku vás provedeme používáním „Řešitele“ ve VBA.

Povolit Řešitele v listu

Řešitel je skrytý nástroj dostupný na kartě dat v aplikaci Excel (pokud je již povolen).

Chcete-li nejprve použít SOLVER v aplikaci Excel, musíme tuto možnost povolit. Postupujte podle následujících kroků.

Krok 1: Přejděte na kartu SOUBOR. Na kartě SOUBOR zvolte „Možnosti“.

Krok 2: V okně Možnosti aplikace Excel zvolte „Doplňky“.

Krok 3: V dolní části vyberete „Doplňky aplikace Excel“ a klikněte na „Přejít“.

Krok 4: Nyní zaškrtněte políčko „Doplněk Řešitele“ a klikněte na OK.

Nyní musíte na kartě s daty vidět „Řešitel“.

Povolit Řešitele ve VBA

Také ve VBA je Řešitel externím nástrojem, musíme mu umožnit jej používat. Povolte jej podle níže uvedených kroků.

Krok 1: Přejít na Nástroje >>> Reference v okně editoru jazyka.

Krok 2: V seznamu odkazů zvolte „Řešitel“ a klikněte na Ok pro jeho použití.

Nyní můžeme použít Řešitel i ve VBA.

Funkce řešiče ve VBA

K napsání kódu VBA musíme ve VBA použít tři funkce „Řešitele“ a tyto funkce jsou „SolverOk, SolverAdd a SolverSolve“.

Řešitel

SolverOk (SetCell, MaxMinVal, ValueOf, ByChange, Engine, EngineDesc)

SetCell: Toto bude odkaz na buňku, který je třeba změnit, tj. Zisková buňka.

MaxMinVal: Toto je volitelný parametr, níže jsou čísla a specifikátory.

  • 1 = Maximalizovat
  • 2 = Minimalizovat
  • 3 = Přiřadit konkrétní hodnotu

ValueOf: Tento parametr musí být zadán, pokud je argument MaxMinVal 3.

ByChange: Změnou, které buňky je třeba tuto rovnici vyřešit.

ŘešitelPřidat

Nyní se podívejme na parametry SolverAdd

CellRef: Chcete-li nastavit kritéria pro vyřešení problému, je třeba změnit buňku.

Vztah: V tomto případě, pokud jsou logické hodnoty splněny, můžeme použít níže uvedená čísla.

  • 1 je menší než (<=)
  • 2 se rovná (=)
  • 3 je větší než (> =)
  • 4 is must have final values ​​that are integers.
  • 5 musí mít hodnoty mezi 0 nebo 1.
  • 6 is must have final values ​​that are different and integers.

Příklad řešení v aplikaci Excel VBA

Tuto šablonu aplikace VBA Solver Excel si můžete stáhnout zde - Šablona aplikace VBA Solver Excel

Například se podívejte na níže uvedený scénář.

Pomocí této tabulky musíme identifikovat částku „Zisk“, která musí být minimálně 10 000. K dosažení tohoto čísla máme určité podmínky.

  • Jednotky k prodeji by měly být celočíselnou hodnotou.
  • Cena / jednotka by měla být mezi 7 a 15.

Na základě těchto podmínek musíme určit, kolik jednotek za jakou cenu prodat, abychom získali hodnotu zisku 10 000.

Dobře, pojďme nyní vyřešit tuto rovnici.

Krok 1: Spusťte podproces VBA.

Kód:

 Sub Solver_Example () End Sub 

Krok 2: Nejprve musíme nastavit odkaz na objektivní buňku pomocí funkce SolverOk .

Krok 3: Prvním argumentem této funkce je „SetCell“, v tomto příkladu musíme změnit hodnotu buňky Profit, tj. Buňky B8.

Kód:

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

Krok 4: Nyní musíme nastavit tuto hodnotu buňky na 10 000, takže pro MaxMinVal použijte 3 jako hodnotu argumentu.

Kód:

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

Krok 5: Další argument ValueOf hodnota by měla být 10 000.

Kód:

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

Dalším argumentem je ByChange, tj. Změnou buněk, které je třeba tuto rovnici vyřešit. V takovém případě je třeba změnit buňku na jednotku prodeje (B1) a cenu za jednotku (B2).

Kód:

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

Poznámka: zbývající argumenty zde nejsou povinné.

Krok 6: Jakmile je objektivní buňka nastavena, nyní musíme vytvořit další kritéria. Pro tuto otevřenou funkci „SolverAdd“.

Krok 7: První odkaz na buňku, který musíme změnit, je buňka Cena za jednotku, tj. Buňka B2.

Kód:

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

Krok 8: Tato buňka musí být> = 7, takže argument Vztah bude 3.

Kód:

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

Krok 9: Tato hodnota buňky by měla být> = 7, tj. Text vzorce = 7 .

Kód:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10 000, ByChange: = Range ("B1: B2") SolverAdd CellRef: = Range ("B2"), relace: = 3, FormulaText: = 7 End Sub 

Krok 10: Podobně musí být stejná buňka menší než 15, takže pro tento vztah je <= tj. 1 jako hodnota argumentu.

Kód:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10 000, ByChange: = Range ("B1: B2") SolverAdd CellRef: = Range ("B2"), Relation: = 3, FormulaText: = 7 SolverAdd CellRef: = Range ("B2"), Relation: = 1, FormulaText: = 15 End Sub 

Krok 11: První buňka, tj. Jednotky k prodeji, musí být celočíselná hodnota, proto také nastavte kritéria, jak je uvedeno níže.

Kód:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10 000, ByChange: = Range ("B1: B2") SolverAdd CellRef: = Range ("B2"), relace: = 3, FormulaText: = 7 SolverAdd CellRef: = Range ("B2"), Relation: = 1, FormulaText: = 15 SolverAdd CellRef: = Range ("B1"), Relation: = 4, FormulaText: = "Integer" End Sub 

Krok 12: Posledním krokem je přidání funkce SolverSolve.

Kód:

 Sub Solver_Example () SolverOk SetCell: = Range ("B8"), MaxMinVal: = 3, ValueOf: = 10 000, ByChange: = Range ("B1: B2") SolverAdd CellRef: = Range ("B2"), relace: = 3, FormulaText: = 7 SolverAdd CellRef: = Range ("B2"), Relation: = 1, FormulaText: = 15 SolverAdd CellRef: = Range ("B1"), Relation: = 4, FormulaText: = "Integer" SolverSolve End Sub 

Dobře, spusťte kód stisknutím klávesy F5, abyste získali výsledek.

Po spuštění kódu se zobrazí následující okno.

Stiskněte OK a výsledek získáte v listu aplikace Excel.

Abychom získali zisk 10 000, musíme prodat 5 000 jednotek za 7 za každou cenu, kde je cena 5.

Věci k zapamatování

  • Chcete-li pracovat s Řešitelem v Excelu a VBA, nejprve jej povolte pro list a poté povolte pro odkaz VBA.
  • Jakmile je povoleno na obou pracovních listech a VBA, pak máme přístup ke všem funkcím Řešitele pouze my.