Selles artiklis loome kohandatud funktsiooni, et genereerida määratud vahemike vahel kordumatute ja juhuslike numbrite loend.
Selles näites saame makro käivitada, klõpsates nuppu „Esita”. Enne makro käivitamist peame sisestama nelja parameetri väärtused. Meil on lahtris C12 alumine piirväärtus, lahtris C13 ülemine piir, lahtris C14 nõutav kordumatute juhuslike arv ja lahtris C15 on vaja väljastada sihtkoha aadress.
Loogiline seletus
Oleme loonud unikaalsete ja juhuslike numbrite loendi loomiseks kohandatud funktsiooni „UniqueRandomNumbers”. See funktsioon võtab sisendparameetritena vajaliku arvu, alumise ja ülemise piiri.
Oleme loonud makro „TestUniqueRandomNumbers”, et helistada kohandatud funktsioonile „UniqueRandomNumbers”. See makro käivitatakse, klõpsates nuppu "Esita". See makro võtab kasutaja sisendväärtuse vahemikust C12 kuni C15.
Koodi selgitus
i = CLng (Rnd () * (ULimit - LLimit) + LLimit)
Ülaltoodud valemit kasutatakse juhusliku arvu loomiseks määratletud ülemise ja alumise piiri vahel. Funktsioon Rnd () loob juhusliku arvu vahemikus 0 kuni 1.
Vahemik (valik, valik. Nihe (loendur - 1, 0)). Väärtus = _
Application.Transpose (RandomNumberList)
Ülaltoodud koodi kasutatakse massiivi väljundi ülevõtmiseks ja väljundi määramiseks määratud sihtkohale.
Palun järgige koodi allpool
Valik Selgesõnaline funktsioon UniqueRandomNumbers (NumCount nii pikk, LLimit nii pikk, ULimit nii pikk) kui variant 'Deklareerivad muutujad Dim RandColl kogumisena Dim i As Long Dim varTemp () As Long' Kasutaja määratud väärtuse kontrollimine Kui NumCount ULimit then UniqueRandomNumbers = "Määratud alumine piir on suurem kui määratud ülempiir" Välju funktsioonist Kui If NumCount> (ULimit - LLimit + 1) Siis UniqueRandomNumbers = "Nõutava unikaalse juhusliku arvu arv on suurem kui alumise vahel eksisteeriva kordumatu arvu maksimaalne arv piir ja ülempiir "Välju Funktsioon Lõpp Kui" Uue kogumisobjekti loomine Määra RandColl = Uus kogu Randomiseeri Do On Error Resume Next "Arvutab juhusliku arvu, mis on alumise ja ülemise piiri vahel i = CLng (Rnd () * (ULimit - LLimit) + LLimit) "Unikaalse juhusliku numbri sisestamine kollektsiooni RandColl. Lisage i, CStr (i) On Error GoTo 0" Looping, kuni kogumis on üksusi, mis on võrdsed numCount Loop kuni RandColl.Count = Num Count ReDim varTemp (1 to NumCount) 'Kollektsiooni üksuste väärtuse määramine massiivile varTemp For i = 1 To NumCount varTemp (i) = RandColl (i) Next i UniqueRandomNumbers = varTemp Set RandColl = Nothing Erase varTemp End Function Sub TestUniqueRandomNumbers () 'Deklareeri muutujad Dim RandomNumberList kui variandi Dim Counter nii pikk, LowerLimit kui pikk, UpperLimit kui Long Dim aadress kui string' Kasutaja sisestatud väärtuste hankimine Counter = Range ("C14"). Value LowerLimit = Range ("C12" ) .Value UpperLimit = Vahemik ("C13"). Väärtus Aadress = Vahemik ("C15"). Väärtus 'Kohandatud funktsiooni kutsumine UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Sihtvahemiku (aadressi) valimine. Valige 'Assigning' väärtus sihtkoha vahemikus (Selection, Selection.Offset (Counter - 1, 0)). Value = _ Application.Transpose (RandomNumberList) End Sub
Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile