Ez az oktatóanyag megmutatja, hogyan kell használni a Solver bővítményt a VBA-ban.
A Solver egy olyan bővítmény, amelyet az Excel tartalmaz, és a „mi lett volna, ha” elemzés elvégzésére szolgál azáltal, hogy alternatív válaszokat ad egy cella képletére olyan értékek alapján, amelyeket a munkafüzet más celláiból továbbíthat a képlethez.
A Solver bővítmény engedélyezése az Excelben
Válaszd ki a Fájl az Excel szalagon, majd lépjen le a Lehetőségek.
Válassza a lehetőséget Bővítmények és kattintson a Megy gombot az Excel-bővítmények mellett.
Győződjön meg arról, hogy a Megoldó bővítmény opció van kiválasztva.
Alternatív megoldásként kattintson a gombra Excel-bővítmények a Fejlesztő szalagot a Bővítmények párbeszédpanel megjelenítéséhez.
A Megoldó bővítmény engedélyezése a VBA-ban
Miután engedélyezte a Megoldó bővítményt az Excelben, hozzá kell adnia egy hivatkozást a VBA-projekthez, hogy használni tudja a VBA-ban.
Győződjön meg róla, hogy rákattintottak a VBA projektben, ahol használni szeretné a Megoldót. Kattintson a Eszközök menü majd tovább Hivatkozások.
Hivatkozás a Megoldó bővítmény hozzáadódik a projekthez.
Most már használhatja a Megoldó bővítményt a VBA kódban!
Megoldó funkciók használata VBA -ban
A Solver VBA használatához 3 Solver VBA funkciót kell használnunk. Ezek SolverOK, SolverAdd, és SolverSolve.
SolverOK
- SetCell - választható - ennek a cellára kell utalnia, amelyet módosítani kell - tartalmaznia kell egy képletet. Ez megfelel aÁllítsa be az objektív cellát doboz aMegoldó paraméterek párbeszédablak.
- MaxMinVal - választható - Ezt beállíthatja 1 (Maximize), 2 (Minimize) vagy 3 értékre. Ez megfelel a Max, Min, ésÉrték lehetőségek aMegoldó paraméterek párbeszédablak.
- Értéke - választható -Ha a MaxMinValue értéke 3, akkor ezt az érvet kell megadnia.
- ByChange - választható -Ez megmondja a megoldónak, hogy mely cellákat módosíthatja a kívánt érték elérése érdekében. Ez megfelel aVáltozó cellák megváltoztatásával doboz aMegoldó paraméterek párbeszédablak.
- Motor - választható - ez jelzi azt a megoldási módszert, amelyet a megoldáshoz kell használni. 1 a Simplex LP módszerhez, 2 a GRG nemlineáris módszerhez vagy 3 az Evolutionary módszerhez. Ez megfelel aVálasszon megoldási módszert legördülő listában aMegoldó paraméterek párbeszédablak
- MotorDesc - választható - ez egy alternatív módja a megoldási módszer kiválasztásának - itt a „Simplex LP”, „GRG Nonlinear” vagy „Evolutionary” karakterláncokat írja be. Ez is megfelel aVálasszon megoldási módszert legördülő listában aMegoldó paraméterek párbeszédablak
SolverAdd
- CellRef - kívánt - ez egy hivatkozás egy cellára vagy cellatartományra, amelyet módosítani kell a probléma megoldása érdekében.
- Kapcsolat - kívánt - ez egy egész szám, amelynek 1 és 6 között kell lennie, és megadja az engedélyezett logikai összefüggést.
- 1 kisebb, mint (<=)
- 2 egyenlő (=)
- 3 nagyobb, mint (> =)
- A 4 végső értékeinek egész számoknak kell lenniük.
- Az 5 értéknek 0 vagy 1 között kell lennie.
- A 6 -nak végső értékekkel kell rendelkeznie, amelyek különbözőek és egész számok.
- FormulaText - választható - A kényszer jobb oldala.
Megoldó példa létrehozása
Tekintsük a következő munkalapot.
A fenti lapon az első hónapban egyenlítenünk kell, ha a B14 cellát nullára állítjuk az F1 – F6 cellák kritériumainak módosításával.
123 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, EngineDesc: = "GRG nemlineáris"End Sub |
Miután beállította a SolverOK paramétereket, hozzá kell adnia néhány kritériumkorlátot.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, EngineDesc: = "GRG nemlineáris"„Feltételek hozzáadása - az F3 nem lehet kevesebb 8 -nálSolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8""Feltételek hozzáadása - az F3 nem lehet kevesebb 5000 -nélSolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"End Sub |
A SolverOK és a SolverAdd beállítása után (ha szükséges) megoldhatja a problémát.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, EngineDesc: = "GRG nemlineáris"'add feltétel - F3 nem lehet kevesebb, mint 8SolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"'találj megoldást a probléma megoldásávalSolverSolveEnd Sub |
A kód futtatása után a következő ablak jelenik meg a képernyőn. Válassza ki a kívánt opciót (azaz a Megoldó megoldás megtartása vagy az eredeti értékek visszaállítása) lehetőséget, majd kattintson az OK gombra.