Vygenerujte zoznam jedinečných náhodných čísel pomocou jazyka VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme vlastnú funkciu na generovanie zoznamu jedinečných a náhodných čísel medzi zadanými rozsahmi.

V tomto prípade môžeme makro spustiť kliknutím na tlačidlo „Odoslať“. Pred spustením makra musíme zadať hodnoty pre štyri parametre. Dodali sme dolnú limitnú hodnotu v bunke C12, hornú hranicu v bunke C13, počet jedinečných náhodných požadovaných v bunke C14 a cieľovú adresu, kde bol výstup požadovaný v bunke C15.

Logické vysvetlenie

Vytvorili sme vlastnú funkciu „UniqueRandomNumbers“ na generovanie zoznamu jedinečných a náhodných čísel. Táto funkcia berie ako vstupné parametre požadovaný počet, dolnú a hornú hranicu.

Vytvorili sme makro „TestUniqueRandomNumbers“ na volanie vlastnej funkcie „UniqueRandomNumbers“. Toto makro sa spustí kliknutím na tlačidlo „Odoslať“. Toto makro preberá vstupnú hodnotu používateľa z rozsahu C12 až C15.

Vysvetlenie kódu

i = CLng (Rnd () * (ULimit - LLimit) + LLimit)

Vyššie uvedený vzorec sa používa na vytvorenie náhodného čísla medzi definovanou hornou a dolnou hranicou. Funkcia Rnd () vytvorí náhodné číslo medzi 0 a 1.

Rozsah (výber, výber. Offset (počítadlo - 1, 0)). Hodnota = _

Aplikácia. Transpozícia (RandomNumberList)

Vyššie uvedený kód sa používa na transpozíciu výstupu poľa a priradenie výstupu na určené miesto určenia.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Možnosť Explicitná funkcia UniqueRandomNumbers (NumCount As Long, LLimit As Long, ULimit As Long) As Variant 'Declaring variables Dim RandColl As Collection Dim i As Long Dim varTemp () As Long' Validation check for the value specified by the user If NumCount ULimit Then UniqueRandomNumbers = "Špecifikovaná dolná hranica je väčšia ako zadaná horná hranica" Ukončiť funkciu Koniec Ak NumCount> (ULimit - LLimit + 1) Potom UniqueRandomNumbers = "Počet požadovaných jedinečných náhodných čísel je väčší ako maximálny počet jedinečných čísel, ktoré môžu existovať medzi dolnými limit and upper limit "Ukončiť Funkcia Koniec Ak 'Vytváranie nového objektu zbierky Nastaviť RandColl = Nová zbierka Randomizovať Do On Pri chybe Pokračovať ďalej' Výpočet náhodného čísla, ktoré existuje medzi dolnou a hornou hranicou i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Vkladanie jedinečného náhodného čísla do zbierky RandColl.Add i, CStr (i) On Error GoTo 0' Opakovanie do zbierky obsahuje položky rovnajúce sa numCount Slučka Do RandColl.Count = Num Count ReDim varTemp (1 To NumCount) 'Priradenie hodnoty položiek v kolekcii k poli varTemp Pre i = 1 až NumCount varTemp (i) = RandColl (i) Ďalej i UniqueRandomNumbers = varTemp Set RandColl = Nič Vymazať varTemp Koniec Funkcia Sub TestUniqueRandomNumbers () 'Deklarovať premenné Dim RandomNumberList ako variant Dim Dim Counter as Long, LowerLimit as Long, UpperLimit as Long Dim Address as String' Získanie hodnôt zadaných používateľom Counter = Range ("C14"). Hodnota LowerLimit = Range ("C12" ) .Hodnota UpperLimit = Rozsah ("C13"). Hodnota Adresa = Rozsah ("C15"). Hodnota 'Volanie vlastnej funkcie UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Výber cieľového rozsahu (adresy). Vyberte 'Priradenie hodnota v cieľovom rozsahu (Selection, Selection.Offset (Counter - 1, 0)). Hodnota = _ Application.Transpose (RandomNumberList) End Sub 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku