U ovom ćemo članku stvoriti prilagođenu funkciju za generiranje popisa jedinstvenih i slučajnih brojeva između navedenih raspona.
U ovom primjeru makronaredbu možemo pokrenuti klikom na gumb "Pošalji". Prije izvođenja makronaredbe moramo unijeti vrijednosti za četiri parametra. Dobavili smo donju graničnu vrijednost u ćeliji C12, gornju granicu u ćeliji C13, broj jedinstvenih slučajnih naslova potrebnih u ćeliji C14 i adresu odredišta u kojoj je izlazna vrijednost potrebna u ćeliji C15.
Logično objašnjenje
Stvorili smo prilagođenu funkciju “UniqueRandomNumbers” za generiranje popisa jedinstvenih i slučajnih brojeva. Ova funkcija uzima potrebni broj, donju granicu i gornju granicu kao ulazne parametre.
Napravili smo makro "TestUniqueRandomNumbers" za pozivanje prilagođene funkcije "UniqueRandomNumbers". Ova se makronaredba izvršava klikom na gumb "Pošalji". Ovaj makro uzima vrijednost korisničkog unosa iz raspona C12 do C15.
Objašnjenje koda
i = CLng (Rnd () * (ULimit - LLimit) + LLimit)
Gornja formula koristi se za stvaranje slučajnog broja između definirane gornje i donje granice. Funkcija Rnd () stvara slučajni broj između 0 i 1.
Raspon (odabir, odabir. Pomak (brojač - 1, 0)). Vrijednost = _
Application.Transpose (RandomNumberList)
Gornji kôd koristi se za transponiranje izlaza niza i dodjeljivanje izlaza navedenom odredištu.
Molimo slijedite dolje za kôd
Opcija Eksplicitna funkcija UniqueRandomNumbers (NumCount As Long, LLimit As Long, ULimit As Long) As Variant 'Deklariranje varijabli Dim RandColl As Collection Dim i As Long Dim varTemp () As Long' Provjera vrijednosti koju je naveo korisnik Ako NumCount ULimit Then UniqueRandomNumbers = "Navedena donja granica veća je od navedene gornje granice" Izađi iz funkcije kraj Ako je NumCount> (ULimit - LLimit + 1) Tada je UniqueRandomNumbers = "Broj potrebnih jedinstvenih slučajnih brojeva veći je od maksimalnog broja jedinstvenog broja koji može postojati između donje granice granica i gornja granica "Izlaz Funkcija Kraj Ako" Stvaranje novog objekta prikupljanja Postavi RandColl = Nova zbirka Nasumično radi Uradi Grešku Nastavi dalje "Izračunavanje slučajnog broja koji postoji između donje i gornje granice i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Umetanje jedinstvenog slučajnog broja u zbirku RandColl.Add i, CStr (i) On Error GoTo 0' Petlja do zbirke ima stavke jednake numCount Loop Do RandColl.Count = Num Count ReDim varTemp (1 To NumCount) 'Dodjeljivanje vrijednosti stavki u zbirci nizu varTemp Za i = 1 Za NumCount varTemp (i) = RandColl (i) Sljedeće i UniqueRandomNumbers = varTemp Set RandColl = Ništa Brisanje varTemp Kraj Funkcija Pod TestUniqueRamp () 'Deklarirajte varijable Dim RandomNumberList kao varijantu Dim Counter As Long, LowerLimit As Long, UpperLimit As Long Dim Address As String' Dobivanje vrijednosti koje unosi korisnik Counter = Range ("C14"). Value LowerLimit = Range ("C12" ) .Vrednost Gornji limit = raspon ("C13"). Vrijednost Adresa = Raspon ("C15"). Vrijednost 'Pozivanje prilagođene funkcije UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Brojilo, Donja granica, Gornja granica)' Odabir odredišnog raspona (adresa). Odaberite 'Dodjeljivanje vrijednost u rasponu odredišta (Odabir, Odabir.Offset (Brojač - 1, 0)). Vrijednost = _ Aplikacija.Transpose (RandomNumberList) End Sub
Ako vam se dopao ovaj blog, podijelite ga sa svojim prijateljima na Facebooku. Također, možete nas pratiti na Twitteru i Facebooku.
Voljeli bismo vas čuti, javite nam kako možemo poboljšati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte