Vytvořte seznam jedinečných náhodných čísel pomocí VBA v aplikaci Microsoft Excel

Anonim

V tomto článku vytvoříme vlastní funkci pro generování seznamu unikátních a náhodných čísel mezi zadanými rozsahy.

V tomto případě můžeme makro spustit kliknutím na tlačítko „Odeslat“. Před spuštěním makra musíme zadat hodnoty pro čtyři parametry. Dodali jsme dolní mezní hodnotu v buňce C12, horní mez v buňce C13, počet jedinečných náhodných požadovaných v buňce C14 a cílovou adresu, kde byl výstup vyžadován v buňce C15.

Logické vysvětlení

Vytvořili jsme vlastní funkci „UniqueRandomNumbers“ pro generování seznamu unikátních a náhodných čísel. Tato funkce bere jako vstupní parametry požadovaný počet, dolní mez a horní mez.

Vytvořili jsme makro „TestUniqueRandomNumbers“ pro volání vlastní funkce „UniqueRandomNumbers“. Toto makro se spustí kliknutím na tlačítko „Odeslat“. Toto makro přebírá uživatelskou vstupní hodnotu z rozsahu C12 až C15.

Vysvětlení kódu

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

Výše uvedený vzorec slouží k vytvoření náhodného čísla mezi definovanou horní a dolní mezí. Funkce Rnd () vytvoří náhodné číslo mezi 0 a 1.

Rozsah (výběr, výběr. Offset (čítač - 1, 0)). Hodnota = _

Application.Transpose (RandomNumberList)

Výše uvedený kód se používá k transpozici výstupu pole a přiřazení výstupu k zadanému cíli.

Pro kód prosím postupujte níže

 Možnost Explicitní funkce 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 = "Zadaný dolní limit je větší než zadaný horní limit" Ukončit Funkce Konec If If NumCount> (ULimit - LLimit + 1) Then UniqueRandomNumbers = "Počet požadovaných jedinečných náhodných čísel je větší než maximální počet jedinečných čísel, které mohou existovat mezi dolními limit and upper limit "Exit Function End If 'Vytváření nového objektu kolekce Set RandColl = New Collection Randomize Do On Error Resume Next' Výpočet náhodného čísla, které existuje mezi dolní a horní mezí i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Vkládání jedinečného náhodného čísla do kolekce RandColl.Add i, CStr (i) On Error GoTo 0' Opakování do kolekce má položky rovné numCount Loop Before RandColl.Count = Num Count ReDim varTemp (1 To NumCount) 'Přiřazení hodnoty položek ve sbírce poli varTemp Pro i = 1 To NumCount varTemp (i) = RandColl (i) Next i UniqueRandomNumbers = varTemp Set RandColl = Nothing Erase varTemp End Function Sub TestUniqueRandomNumbers () 'Deklarace proměnných Dim RandomNumberList jako Variant Dim Counter As Long, LowerLimit As Long, UpperLimit as Long Dim Address As String' Získávání hodnot zadaných uživatelem Counter = Range ("C14"). Hodnota LowerLimit = Range ("C12" ) .Hodnota UpperLimit = Rozsah ("C13"). Hodnota Adresa = Rozsah ("C15"). Hodnota 'Volání vlastní funkce UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Výběr cílového rozsahu (adresy). Vyberte 'Přiřazení hodnota v cílovém rozsahu (výběr, výběr.Offset (čítač - 1, 0)). Hodnota = _ Application.Transpose (RandomNumberList) End Sub 

Pokud se vám tento blog líbil, sdílejte ho se svými přáteli na Facebooku. Také nás můžete sledovat na Twitteru a Facebooku.

Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit naši práci a zlepšit ji pro vás. Napište nám na e -mail