VBA -lösare

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å knappen bredvid Excel-tillägg.

Se till att Tilläggsprogram för lösare alternativet är valt.

Alternativt kan du klicka på Excel-tilläggUtvecklare 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.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave