VBA-tavoitehaku - Kuinka tavoitehakua käytetään arvon löytämiseen Excel VBA: ssa?

Tavoitteen haku Excel VBA: ssa

Goal Seek on Excel VBA: ssa käytettävissä oleva työkalu, joka auttaa meitä löytämään vaaditun määrän tavoitetta varten.

Olet esimerkiksi opiskelija ja olet keskittänyt 90 prosentin keskimääräisen pistemäärän kuudesta käytettävissä olevasta aiheesta. Tähän mennessä olet suorittanut 5 tenttiä, ja sinulle jää vain yksi aihe. Odotetut pisteet viidestä valmistuneesta oppiaineesta ovat 89, 88, 91, 87, 89 ja 90. Nyt haluat tietää, kuinka paljon sinun on pisteytettävä loppututkimuksessa, jotta saavutat keskimääräisen prosentuaalisen tavoitteen, 90%.

Tämä voidaan tehdä käyttämällä GOAL SEEK -toimintoa Excel-laskentataulukossa sekä VBA-koodauksessa. Katsotaanpa, miten se toimii VBA: n kanssa.

VBA: n tavoitehaku

VBA Goal Seekissä meidän on määritettävä muutettava arvo ja päästävä lopulliseen kohdistettuun tulokseen, joten anna soluviite käyttämällä VBA RANGE -objektia. Myöhemmin voimme käyttää GOAL SEEK -vaihtoehtoa.

Alla on tavoitteen etsinnän syntaksia VBA: ssa.

  • Alue (): Tässä on annettava soluviite, missä meidän on saavutettava kohdennettu arvo.
  • Tavoite: Tässä väitteessä meidän on annettava mikä on tavoite, jonka yritämme saavuttaa.
  • Solun vaihtaminen: Tässä argumentissa meidän on toimitettava toimittamalla muuttamalla solun arvoa, joka meidän on saavutettava tavoite.

Esimerkkejä Excel VBA -tavoitteista

Seuraavassa on esimerkkejä tavoitteiden etsimisestä Excel VBA: ssa.

VBA-tavoitehaku - esimerkki 1

Otetaan esimerkki vain keskimääräisestä tenttituloksesta. Alla on odotettavissa olevat 5 aiheen pisteet suoritetusta tentistä.

Ensinnäkin meidän on saavutettava keskimääräinen pisteet suoritetuista viidestä aineesta. Käytä AVERAGE-funktiota B8-solussa.

Tässä esimerkissä tavoitteemme on 90 ja solunvaihto on B7 . Joten Tavoitteiden etsiminen auttaa meitä löytämään kohdennetut pisteet lopullisesta aiheesta, jotta saavutettaisiin keskimääräinen 90.

Aloita alimenettely VBA-luokan moduulissa.

Koodi:

Alatavoite_haku_esimerkki1 () Lopeta alim

Tarvitsemme tuloksen nyt B8-solussa, joten anna tämä alueviite käyttämällä RANGE-objektia.

Koodi:

Alatavoitteen_haku_esimerkki1 () Alue ("B8") Lopeta alim

Laita nyt piste ja kirjoita "Tavoitteen haku" -vaihtoehto.

Ensimmäinen argumentti on "tavoite" tälle. Meidän on annettava lopullinen tavoitteemme saavuttaaksemme RANGE B8. Tässä esimerkissä yritämme saavuttaa tavoitteen 90.

Koodi:

Sub Goal_Seek_Example1 () -alue ("B8"). GoalSeek-tavoite: = 90 End Sub

Seuraava argumentti on "Muuttuva solu" tätä varten, meidän on toimitettava missä solussa tarvitsemme uuden arvon tavoitteen saavuttamiseksi .

Koodi:

Sub Goal_Seek_Example1 () -alue ("B8"). GoalSeek-tavoite: = 90, ChangingCell: = Range ("B7") End Sub

Tässä esimerkissä vaihtuva solumme on Sub 6 -solu eli B7-solu.

Ok, ajetaan koodi nähdäksemme, mitä lopullisessa aiheessa on tehtävä, jotta saavutettaisiin keskimääräinen prosenttiosuus 90.

Joten viimeisessä aiheessa 95 on pisteytettävä, jotta saadaan kokonaiskeskiarvo 90.

VBA-tavoitehaku - esimerkki 2

Olemme oppineet käyttämään GOAL SEEK -määritystä tavoitteen saavuttamiseksi tarvittavan numeron löytämiseksi. Nyt näemme joitain edistyneempiä esimerkkejä lopputenttituloksen löytämisestä useammalle kuin yhdelle opiskelijalle.

Alla on 5 tutkimuksen odotetut tulokset.

Koska löydämme tavoitteen useammalle kuin yhdelle opiskelijalle, meidän on käytettävä silmukoita. Alla on koodi sinulle.

Koodi:

Sub Goal_Seek_Example2 () Dim k yhtä pitkä Dim ResultCell kuin Range Dim ChangingCell as Range Dim TargetScore kokonaislukuna TargetScore = 90 K = 2-5 Aseta ResultCell = Solut (8, k) Aseta ChangingCell = Solut (7, k) ResultCell.GoalSeek TargetScore, ChangingCell Next k End Sub

Tämä koodi käy läpi kaikki opiskelijoiden pisteet ja saavuttaa lopullisen kokeen pisteet, joka vaaditaan 90 keskiarvon saavuttamiseksi.

Joten saimme lopputuloksen nyt,

Opiskelijan A on pisteytettävä vain 83, jotta saavutetaan 90 prosentin kokonaismäärä, ja opiskelijan D on 93.

Katsokaa kuitenkin opiskelija-bed & C.-opintoja. Heidän on pisteytettävä loppukokeessa 104, mikä ei ole ollenkaan mahdollista.

Tällä tavoin GOAL SEEK -analyysin avulla voimme löytää tarvittavan määrän tavoitellun luvun saavuttamiseksi puolivälissä projektin tai prosessin kautta.

Muistettavaa

  • Tavoitteenhaku on saatavana sekä taulukkotyökaluilla että VBA-työkalulla.
  • Tuloksena olevan solun tulisi aina sisältää kaava.
  • Meidän on annettava tavoitearvo ja muutettava soluviittaus tavoitteen hakutyökaluun.

Mielenkiintoisia artikkeleita...