Ř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 ExcelNapří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.