Jod-R Skrevet 27. februar 2016 Del Skrevet 27. februar 2016 Hei Jeg har en Excel simulering der jeg blant annet ender opp med to tall, la oss si X og Y. Et av disse tallene vil naturligvis være større enn det andre og jeg skulle ha beregnet sannsynligheten for at X er større enn Y. Dette er jo forså vidt greit nok, antall ganger (X>Y=Sant)/antall ganger simuleringen er kjørt. Problemet er hvordan jeg får Excel til å telle opp antall ganger X>Y inntreffer. Jeg får til å sjekke det med slutten med =Hvis(X>Y;SANN;USANN), men det sjekker bare den siste gangen simuleringen blir kjørt. Hvordan får jeg til å telle det opp for alle rundene og gi meg det totale antall ganger det inntraff på slutten av simuleringen. Den som hjelper får min evige takknemlighet Lenke til kommentar
Jod-R Skrevet 28. februar 2016 Forfatter Del Skrevet 28. februar 2016 Jeg tenkte noe ala dette If (X>Y) teller = teller + 1 end if Problemet er at jeg ikke har peiling på hvordan jeg skal gjøre dette. Jeg har fått utdelt et excel ark ifra skolen som inneholder selve simuleringen og som vi kan modifisere. Er det mulig å få dette til uten å gå innom VBA (som jeg nettopp oppdaget :/) og kanskje noen kan gi meg noen tips hvordan dette kan gjøres uansett metode. Lenke til kommentar
Jod-R Skrevet 28. februar 2016 Forfatter Del Skrevet 28. februar 2016 (endret) Ok, har kommet litt videre, men sliter fremdeles... Har fått til dette: Function prosent(sjekk, iterasjoner) If sjekk = True Then teller = teller + 1 End If prosent = teller / iterasjoner End Function Det som er problemet er at mellom hver iterasjon så nullstiller "teller" seg, hvordan får jeg excel til å huske den? sjekk er enten TRUE eller FALSE, iterasjoner er et tall. Endret 28. februar 2016 av Jod-R Lenke til kommentar
Jod-R Skrevet 28. februar 2016 Forfatter Del Skrevet 28. februar 2016 Kanskje litt spam, men here it goes Fått det til nå, men lurte på om noen kanskje kunne gjøre det litt bedre, nemlig det å sette teller = 0 i selve modulen/macroen. Dette har jeg nå. Public teller As IntegerFunction prosent(sjekk, iterasjoner) If sjekk = True Then teller = teller + 1 End If prosent = teller / iterasjoner End Function Da må jeg sette teller=0 i modulen som inneholder run funksjonen, lurte på om det var mulig å gjøre det i samme modulen som resten av koden. Hvis du kan forklare meg hvordan Public funker og hva alternativene er så hadde det blitt bra. Og om noe annet hadde virket her Lenke til kommentar
ExcelGuru Skrevet 28. februar 2016 Del Skrevet 28. februar 2016 Hei! Stor utvikling fra første innlegg Hvis du vil ha det i samme kode, kan du bruke en STATIC variabel i funksjonen din. Henger du på et valgfritt paramter i funksjonen, kan du kalle den opp før du starter med Dummy=Prosent(0,0,True) Dette vil sikre at du nullstiller Teller Function prosent(sjekk, iterasjoner, optional nullstill as boolean) Static Teller as long if nullstill = true then Teller =0 Prosent=0 Exit function end if If sjekk = True Then teller = teller + 1 End If prosent = teller / iterasjoner End Function Vennlig hilsen Ketil 1 Lenke til kommentar
Jod-R Skrevet 29. februar 2016 Forfatter Del Skrevet 29. februar 2016 Da mener du at jeg skal skrive foreksempel i K20 =prosent(0,0,true) og i K21 =prosent(sjekk,iterasjoner) og slik få nullstilt teller? Lenke til kommentar
Jod-R Skrevet 29. februar 2016 Forfatter Del Skrevet 29. februar 2016 (endret) Tusen takk for svar. Lurte på om du kunne kommentere om jeg tenkte rett angående det jeg spurte over. edit: prøvde det, men fikk det til å automatisk til å resette seg selv når jeg trykket på run knappen. Endret 29. februar 2016 av Jod-R Lenke til kommentar
ExcelGuru Skrevet 1. mars 2016 Del Skrevet 1. mars 2016 Fint Utfordringen er vel å sikre at Teller er null når du starter et antall Iterasjoner. Teller vil være null når du åpner arket, men vil ha verdi inntil du trykker RESET i VBA. Kallet til funksjonen over måtte du ha lagt på en knapp som startet en makro. En lurere måte å gjøre det på enn den jeg foreslo over er kanskje å bruke parameteret Iterasjoner som du allerede har. Hvis Iterasjoner starter på null, kan du resette ved første kall: Function prosent(sjekk, iterasjoner) Static Teller As Long If iterasjoner = 0 Then Teller = 0 prosent = 0 Exit Function End If If sjekk = True Then Teller = Teller + 1 End If prosent = Teller / iterasjoner End Function Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå