Selkäongelma Excel VBA: ssa - Helppo Excel -makro

Sisällysluettelo

Alla tarkastelemme ohjelmaa Excel VBA että ratkaisee pieni esimerkki a reppu ongelma.

Määritelmä: Määrittele kokoelmaan sisällytettävät kohteet, koska jokaisella on paino ja arvo. Se on saanut nimensä ongelmasta, jonka kohdistaa joku, jota rajoittaa kiinteän kokoinen reppu ja jonka on täytettävä se hyödyllisimmillä esineillä.

Esimerkki: 5 tuotetta, joiden paino, arvo ja raja on annettu.

Excelissä tämä ongelma näyttää tältä:

1. Ilmoitamme ensin viisi Double -tyyppistä muuttujaa nimillä limit, weight, value, totalWeight ja maximumValue.

Dim limit As Double, paino As Double, arvo Double, totalWeight Double, maximumValue Double

2. Seuraavaksi ilmoitamme viisi Integer -tyyppistä muuttujaa nimillä i, j, k, l, m.

Dim i, j, k, l, m kokonaislukuna

3. Alustamme kaksi muuttujaa. Alustamme muuttujan rajan solun D6 arvolla. Alustamme muuttujan maximumValue arvolla 0.

raja = Alue ("D6"). arvo
maksimiarvo = 0

4. Seuraavaksi tarkistamme kaikki mahdolliset ratkaisut. Voimme joko sisällyttää kohteen (1) tai jättää sen pois (0). Aloitamme 5 seuraaville silmukoille. Yksi kutakin kohdetta varten.

I = 0 - 1
Jos j = 0 - 1
K = 0 - 1
L = 0 - 1
M = 0 - 1

5. Laskemme mahdollisen ratkaisun painon ja arvon.

paino = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
arvo = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. Olemme löytäneet uuden paremman ratkaisun vain, jos arvo on korkeampi kuin maximumValue ja paino on alempi kuin raja.

Jos arvo> maximumValue Ja paino <= raja Sitten

7. Jos totta, kirjoitamme uuden ratkaisun riville 4, paino kokonaispainoon ja arvo MaximumValue.

Alue ("B4"). Arvo = i
Alue ("C4"). Arvo = j
Alue ("D4"). Arvo = k
Alue ("E4"). Arvo = l
Alue ("F4"). Arvo = m
totalWeight = paino
maximumValue = arvo

8. Muista sulkea If -lause.

Loppu Jos

9. Älä unohda sulkea 5 For Next -silmukkaa.

 Seuraava m
Seuraava l
Seuraava k
Seuraava j
Seuraavaksi minä

Excel VBA tarkistaa jokaisen mahdollisen ratkaisun tällä tavalla ja sen seurauksena optimaalinen ratkaisu näkyy rivillä 4. Muista, että 1 tarkoittaa, että sisällytämme kohteen, 0 tarkoittaa, että jätämme sen pois.

10. Kirjoita lopuksi optimaalisen ratkaisun totalWeight ja maximumValue soluihin B6 ja B8.

Alue ("B6"). Arvo = totalWeight
Alue ("B8"). Arvo = maximumValue

11. Testaa ohjelma.

Tulos:

Johtopäätös: on parasta sisällyttää viimeiset neljä kohdetta, joiden maksimiarvo on 15. Tämä ratkaisu, jonka kokonaispaino on 2 + 1 + 1 + 4 = 8, ei ylitä 15: n rajaa.

Huomaa: tekemällä painot ja arvot muuttuvaksi voit ratkaista minkä tahansa tämän kokoisen reppiongelman (katso ladattava Excel -tiedosto).

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave