Tässä artikkelissa luomme mukautetun funktion, joka luo luettelon yksilöllisistä ja satunnaisluvuista määritettyjen alueiden välille.
Tässä esimerkissä voimme suorittaa makron napsauttamalla Lähetä -painiketta. Ennen makron suorittamista meidän on syötettävä arvot neljälle parametrille. Toimitamme alaraja -arvon solussa C12, ylärajan solussa C13, solussa C14 vaaditun yksilöllisen satunnaislukumäärän ja kohdeosoitteen, joka vaaditaan solussa C15.
Looginen selitys
Olemme luoneet "UniqueRandomNumbers" -toiminnon luomaan luettelon ainutlaatuisista ja satunnaisista numeroista. Tämä toiminto ottaa tarvittavat numerot, alarajan ja ylärajan syöttöparametreiksi.
Olemme luoneet "TestUniqueRandomNumbers" -makron kutsumaan "UniqueRandomNumbers" -toimintoa. Tämä makro suoritetaan napsauttamalla Lähetä -painiketta. Tämä makro ottaa käyttäjän syöttämän arvon alueelta C12 - C15.
Koodin selitys
i = CLng (Rnd () * (ULimit - LLimit) + LLimit)
Yllä olevaa kaavaa käytetään satunnaisluvun luomiseen määritetyn ylä- ja alarajan välille. Funktio Rnd () luo satunnaisluvun välillä 0 ja 1.
Alue (Valinta, Valinta.Siirto (Laskuri - 1, 0)). Arvo = _
Application.Transpose (RandomNumberList)
Yllä olevaa koodia käytetään transponoimaan taulukon ulostulo ja määrittämään tulostus määritettyyn kohteeseen.
Seuraa koodia alla
Vaihtoehto Selkeä toiminto UniqueRandomNumbers (NumCount niin pitkä, LLimit niin pitkä, ULimit niin pitkä) vaihtoehtona 'Ilmoittavat muuttujat Dim RandColl Kokoelmana Dim i Kuten Long Dim varTemp () Niin kauan' Tarkista käyttäjän määrittämä arvo If NumCount ULimit then UniqueRandomNumbers = "Määritetty alaraja on suurempi kuin määritetty yläraja" Poistu Toiminto Loppu Jos Jos NumCount> (ULimit - LLimit + 1) Sitten UniqueRandomNumbers = "Vaaditun yksilöllisen satunnaisluvun määrä on suurempi kuin alempien välisten yksilöllisten numeroiden enimmäismäärä raja ja yläraja "Poistu Toiminto Loppu Jos" Uuden kokoelman objektin luominen Aseta RandColl = Uusi kokoelma Satunnaisesti Tee Virhe Jatka seuraavaksi "Laskee satunnaisluvun, joka on ala- ja ylärajan välillä i = CLng (Rnd () * (ULimit - LLim. Count ReDim varTemp (1 to NumCount) 'Kokoelman kohteiden arvon määrittäminen varTemp -matriisille i = 1 NumCountille varTemp (i) = RandColl (i) Seuraava i UniqueRandomNumbers = varTemp Set RandColl = Nothing Erase varTemp End Function Sub TestUniqueRandomNumbers () 'Ilmoita muuttujat Dim RandomNumberList Variant Dim Dim Counter Long, LowerLimit Long, UpperLimit Long Long Dim Address String' Käyttäjän syöttämien arvojen hakeminen Counter = Range ("C14"). Value LowerLimit = Range ("C12" ) .Arvo UpperLimit = Alue ("C13"). Arvo Osoite = Alue ("C15"). Arvo 'Mukautetun funktion kutsuminen UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Valitse kohdealue (osoite). Valitse 'Assigning' arvo kohdealueella (Selection, Selection.Offset (Counter - 1, 0)). Value = _ Application.Transpose (RandomNumberList) End Sub
Jos pidit tästä blogista, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse