Denne vejledning viser dig, hvordan du bruger tilføjelsesprogrammet Solver i VBA.
Solver er et tilføjelsesprogram, der leveres med Excel og bruges til at udføre 'hvad-hvis'-analyse ved at give alternative svar til en formel i en celle baseret på værdier, som du kan overføre til formlen fra andre celler i din projektmappe.
Aktivering af tilføjelsesprogrammet Solver i Excel
Vælg Fil på Excel -båndet og derefter gå ned til Muligheder.
Vælg Tilføjelser og klik på Gå knappen ved siden af Excel-tilføjelser.
Sørg for, at Tilføjelsesprogram til løsning indstilling er valgt.
Alternativt kan du klikke på Excel-tilføjelser på den Udvikler båndet for at få dialogboksen Tilføjelser.
Aktivering af Solver-tilføjelsen i VBA
Når du har aktiveret Solver-tilføjelsen i Excel, skal du derefter tilføje en reference til den i dit VBA-projekt for at kunne bruge den i VBA.
Sørg for, at du er klikket i VBA -projektet, hvor du vil bruge Solver. Klik på Værktøjsmenu og så videre Referencer.
En henvisning til Tilføjelsesprogram til løsning vil blive føjet til dit projekt.
Du kan nu bruge Solver-tilføjelsen i VBA-kode!
Brug af Solver -funktioner i VBA
Vi skal bruge 3 Solver VBA -funktioner for at bruge Solver i VBA. Disse er SolverOK, SolverAdd, og SolverLøs.
LøserOK
- SetCell - valgfri - dette skal referere til den celle, der skal ændres - den skal indeholde en formel. Dette svarer tilIndstil målcelle boks iLøserparametre dialog boks.
- MaxMinVal - valgfri - Du kan indstille dette til 1 (Maksimer), 2 (Minimer) eller 3. Dette svarer til Maks, Min, ogVærdi muligheder iLøserparametre dialog boks.
- Værdi af - valgfri -Hvis MaxMinValue er indstillet til 3, skal du angive dette argument.
- Ved ændring - valgfri -Dette fortæller solver, hvilke celler det kan ændre for at nå den nødvendige værdi. Dette svarer tilVed at ændre variable celler boks iLøserparametre dialog boks.
- Motor - valgfri - dette angiver den løsningsmetode, der skal bruges for at komme til en løsning. 1 til Simplex LP -metoden, 2 til GRG -ikke -lineær metode eller 3 til den evolutionære metode. Dette svarer tilVælg en løsningsmetode rulleliste iLøserparametre dialog boks
- MotorDesc - valgfri -Dette er en alternativ måde at vælge løsningsmetoden på - her vil du skrive strengene "Simplex LP", "GRG Nonlinear" eller "Evolutionary". Dette svarer også tilVælg en løsningsmetode rulleliste iLøserparametre dialog boks
Solver Tilføj
- CellRef - påkrævet - dette er en reference til en celle eller en række celler, der skal ændres for at løse problemet.
- Forhold - påkrævet - dette er et helt tal, der skal være mellem 1 og 6 og angiver den tilladte logiske relation.
- 1 er mindre end (<=)
- 2 er lig med (=)
- 3 er større end (> =)
- 4 er skal have slutværdier, der er heltal.
- 5 er skal have værdier mellem 0 eller 1.
- 6 er skal have slutværdier, der alle er forskellige og heltal.
- FormulaText - valgfri - Højre side af begrænsningen.
Oprettelse af et løsningseksempel
Overvej følgende regneark.
I arket ovenfor skal vi bryde lige i måned nummer et ved at indstille celle B14 til nul ved at ændre kriterierne i cellerne F1 til F6.
123 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"Afslut Sub |
Når du har konfigureret SolverOK -parametrene, skal du tilføje nogle kriterierestriktioner.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'tilføj kriterier - F3 må ikke være mindre end 8SolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8"'tilføj kriterier - F3 må ikke være mindre end 5000SolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"Afslut Sub |
Når du har indstillet SolverOK og SolverAdd (hvis det kræves), kan du løse problemet.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'tilføj kriterier - F3 kan ikke være mindre end 8 SolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8"' tilføj kriterier - F3 må ikke være mindre end 5000SolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"'finde en løsning ved at løse problemetSolverLøsAfslut Sub |
Når du kører koden, vises følgende vindue på din skærm. Vælg den ønskede indstilling (dvs. Behold Solver -løsningen eller Gendan originale værdier), og klik på OK.