Denna handledning visar dig hur du använder tilläggsprogrammet Solver i VBA.
Solver är ett tillägg som levereras med Excel och används för att utföra "vad-om" -analys genom att tillhandahålla alternativa svar på en formel i en cell baserat på värden som du kan skicka till formeln från andra celler i din arbetsbok.
Aktivera tilläggsprogrammet Solver i Excel
Välj Fil på Excel -menyfliksområdet och gå sedan ner till Alternativ.
Välj Tillägg och klicka på Gå knappen bredvid Excel-tillägg.
Se till att Tilläggsprogram för lösare alternativet är valt.
Alternativt kan du klicka på Excel-tillägg på Utvecklare menyfliksområdet för att få dialogrutan Tillägg.
Aktivera tilläggsprogrammet Solver i VBA
När du har aktiverat Solver-tillägget i Excel måste du lägga till en referens till det i ditt VBA-projekt för att kunna använda det i VBA.
Se till att du klickar på det VBA -projekt där du vill använda lösaren. Klicka på Verktyg -menyn och sedan vidare Referenser.
En hänvisning till Tilläggsprogram för lösare kommer att läggas till i ditt projekt.
Du kan nu använda Solver-tillägget i VBA-kod!
Använda lösningsfunktioner i VBA
Vi måste använda 3 Solver VBA -funktioner för att kunna använda Solver i VBA. Dessa är SolverOK, SolverAdd, och SolverLös.
SolverOK
- SetCell - frivillig - detta måste referera till cellen som behöver ändras - den måste innehålla en formel. Detta motsvararAnge målcell lådan iLösarparametrar dialog ruta.
- MaxMinVal - frivillig - Du kan ställa in detta till 1 (Maximera), 2 (Minimera) eller 3. Detta motsvarar Max, Min, ochVärde alternativ iLösarparametrar dialog ruta.
- Värdet av - frivillig -Om MaxMinValue är satt till 3 måste du ange detta argument.
- ByChange - frivillig -Detta berättar för lösaren vilka celler det kan ändra för att nå det önskade värdet. Detta motsvararGenom att ändra variabla celler lådan iLösarparametrar dialog ruta.
- Motor - frivillig - detta indikerar lösningsmetoden som måste användas för att komma till en lösning. 1 för Simplex LP -metoden, 2 för GRG Nonlinear -metoden eller 3 för den evolutionära metoden. Detta motsvararVälj en lösningsmetod listrutan iLösarparametrar dialog ruta
- MotorDesc - frivillig -Detta är ett alternativt sätt att välja lösningsmetod - här skriver du strängarna "Simplex LP", "GRG Nonlinear" eller "Evolutionary". Detta motsvarar ocksåVälj en lösningsmetod listrutan iLösarparametrar dialog ruta
Solver Lägg till
- CellRef - nödvändig - detta är en referens till en cell eller ett cellintervall som ska ändras för att lösa problemet.
- Relation - nödvändig - detta är ett heltal som måste vara mellan 1 och 6 och anger den tillåtna logiska relationen.
- 1 är mindre än (<=)
- 2 är lika med (=)
- 3 är större än (> =)
- 4 är måste ha slutvärden som är heltal.
- 5 är måste ha värden mellan 0 eller 1.
- 6 är måste ha slutvärden som alla är olika och heltal.
- FormulaText - frivillig - Höger sida av begränsningen.
Skapa ett lösningsexempel
Tänk på följande kalkylblad.
I arket ovan måste vi bryta jämnt i månad nummer ett genom att sätta cell B14 till noll genom att ändra kriterierna i cellerna F1 till F6.
123 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"Avsluta Sub |
När du har konfigurerat SolverOK -parametrarna måste du lägga till några kriterier.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'lägg till kriterier - F3 får inte vara mindre än 8SolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8"'lägg till kriterier - F3 får inte vara mindre än 5000SolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"Avsluta Sub |
När du har ställt in SolverOK och SolverAdd (om det behövs) kan du lösa problemet.
1234567 | Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'lägg till kriterier - F3 kan inte vara mindre än 8 SolverAdd CellRef: = "$ F $ 3", Relation: = 3, FormulaText: = "8"' lägg till kriterier - F3 får inte vara mindre än 5000SolverAdd CellRef: = "$ F $ 5", Relation: = 3, FormulaText: = "5000"'hitta en lösning genom att lösa problemetSolverLösAvsluta Sub |
När du har kört koden visas följande fönster på skärmen. Välj det alternativ du behöver (dvs. Behåll lösningslösningen eller Återställ originalvärden) och klicka på OK.