VBA Solver

Denne opplæringen viser deg hvordan du bruker Solver-tillegget i VBA.

Solver er et tillegg som følger med Excel og brukes til å utføre "hva-om" -analyse ved å gi alternative svar på en formel i en celle basert på verdier som du kan overføre til formelen fra andre celler i arbeidsboken.

Aktiverer Solver-tillegget i Excel

Velg Fil på Excel -båndet og gå deretter ned til Alternativer.

Plukke ut Tillegg og klikk på -knappen ved siden av Excel-tillegg.

Sørg for at Løser-tillegg alternativet er valgt.

Alternativt kan du klikke på Excel-tilleggUtvikler båndet for å få dialogboksen Tillegg.

Aktiverer Solver-tillegget i VBA

Når du har aktivert Solver-tillegget i Excel, må du legge til en referanse til det i VBA-prosjektet for å bruke det i VBA.

Sørg for at du er klikket i VBA -prosjektet der du ønsker å bruke Solver. Klikk på Verktøy -menyen og så videre Referanser.

En referanse til Løser-tillegg vil bli lagt til i prosjektet ditt.

Du kan nå bruke Solver-tillegget i VBA-koden!

Bruke løsningsfunksjoner i VBA

Vi må bruke 3 Solver VBA -funksjoner for å bruke Solver i VBA. Disse er SolverOK, SolverAdd, og SolverLøs.

SolverOK

  • SetCell - valgfri - dette må referere til cellen som må endres - den må inneholde en formel. Dette tilsvarerAngi målcelle boksen iLøserparametere dialogboks.
  • MaxMinVal - valgfri - Du kan sette dette til 1 (Maksimer), 2 (Minimer) eller 3. Dette tilsvarer Maks, Min, ogVerdi alternativer iLøserparametere dialogboks.
  • Verdien av - valgfri -Hvis MaxMinValue er satt til 3, må du oppgi dette argumentet.
  • ByChange - valgfri -Dette forteller løser hvilke celler det kan endre for å nå den nødvendige verdien. Dette tilsvarerVed å endre variable celler boksen iLøserparametere dialogboks.
  • Motor - valgfri - dette indikerer løsningsmetoden som må brukes for å komme til en løsning. 1 for Simplex LP -metoden, 2 for GRG Nonlinear -metoden, eller 3 for den evolusjonære metoden. Dette tilsvarerVelg en løsningsmetode rullegardinlisten iLøserparametere dialogboks
  • MotorDesc - valgfri -Dette er en alternativ måte å velge løsningsmetode på - her skriver du strengene "Simplex LP", "GRG Nonlinear" eller "Evolutionary". Dette tilsvarer ogsåVelg en løsningsmetode rullegardinlisten iLøserparametere dialogboks

SolverLegg til

  • CellRef - nødvendig - dette er en referanse til en celle eller en rekke celler som skal endres for å løse problemet.
  • Forhold - nødvendig - dette er et heltall som må være mellom 1 og 6 og spesifiserer det tillatte logiske forholdet.
    • 1 er mindre enn (<=)
    • 2 er lik (=)
    • 3 er større enn (> =)
    • 4 er må ha sluttverdier som er heltall.
    • 5 er må ha verdier mellom 0 eller 1.
    • 6 er må ha sluttverdier som alle er forskjellige og heltall.
  • FormulaText - valgfri - Høyre side av begrensningen.

Opprette et løsningseksempel

Vurder følgende regneark.

I arket ovenfor må vi bryte jevnt i måned nummer én ved å sette celle B14 til null ved å endre kriteriene i cellene F1 til F6.

123 Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"Slutt Sub

Når du har konfigurert SolverOK -parametrene, må du legge til noen kriterierestriksjoner.

1234567 Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Engine: = 1, EngineDesc: = "GRG Nonlinear"'legg til kriterier - F3 kan ikke være mindre enn 8SolverAdd CellRef: = "$ F $ 3", Relasjon: = 3, FormulaText: = "8"'legg til kriterier - F3 kan ikke være mindre enn 5000SolverAdd CellRef: = "$ F $ 5", Relasjon: = 3, FormulaText: = "5000"Slutt Sub

Når du har angitt SolverOK og SolverAdd (hvis nødvendig), 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"'legg til kriterier - F3 kan ikke være mindre enn 8 SolverAdd CellRef: = "$ F $ 3", Relasjon: = 3, FormulaText: = "8"' legg til kriterier - F3 kan ikke være mindre enn 5000SolverAdd CellRef: = "$ F $ 5", Relasjon: = 3, FormulaText: = "5000"'finne en løsning ved å løse problemetSolverLøsSlutt Sub

Når du kjører koden, vises følgende vindu på skjermen. Velg alternativet du trenger (dvs. Behold Solver -løsningen eller Gjenopprett originale verdier), og klikk OK.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave