Excel VBA: Generátor náhodných čísel bez duplicit (4 příklady)

  • Sdílet Toto
Hugh West

Tento článek ilustruje 4 příklady generátor náhodných čísel bez duplicit pomocí VBA v aplikaci Excel. Zde použijeme k nastavení našeho kódu vestavěnou funkci Rnd aplikace Excel. Ponořme se do příkladů a naučme se techniky generování jedinečných náhodných čísel.

Stáhnout cvičebnici

Stáhněte si tento cvičební sešit a procvičujte si při čtení tohoto článku.

Generátor náhodných čísel bez duplicit.xlsm

4 příklady generátoru náhodných čísel bez duplicit v aplikaci Excel VBA

Psaní kódu v editoru Visual Basic

Na generovat náhodná čísla bez duplicit , musíme otevřít a psát kód VBA v editor Visual Basic. Sledujte kroky na otevřít na editor Visual Basic a napište tam nějaký kód.

  • Přejděte na Vývojář na kartě Pás karet aplikace Excel .
  • Klikněte na na Možnost Visual Basic.

  • V Visual Basic pro aplikace klikněte na Vložení rozevíracího seznamu na vybrat na Nový modul možnost.

Nyní vložte kód uvnitř vizuální editor kódu a stiskněte klávesu F5 na spustit to.

1. Použití funkce VBA Rnd ke generování náhodného čísla bez duplicit

Na stránkách Funkce Rnd se používá v Excel VBA na generovat náhodná čísla které jsou mezi 0 a 1 exkluzivní.

Úkol : Generování 10 náhodných čísel mezi 0 a 1 na adrese buňky A1:A10.

Kód : Vložte následující kód v editor Visual Basic a stiskněte F5 na spustit to.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

Výstup : Výše uvedený snímek obrazovky ukazuje 10 jedinečných náhodných čísel v v rozsahu 0 a 1.

Vysvětlení kódu:

V tomto kódu jsme použili Funkce Rnd na vložit náhodná čísla v rozsah buněk A1:A10 . vkládání a nové číslo , jsme použili Smyčka Do While na podívejte se na pro číslo v předdefinovaný rozsah buněk (A1:A10) zda je již existuje nebo ne . Chcete-li zkontrolovat existence o číslo v rozsah buněk pokaždé jsme kód nakonfigurovali pomocí příkazu Funkce COUNTIF , Tato funkce kontroly a nové náhodné číslo v seznam z již existující čísla před vložením.

Přečtěte si více: Vzorec aplikace Excel pro generování náhodného čísla (5 příkladů)

2. Generátor náhodných čísel pro definované dolní a horní hranice bez duplicit

Na generovat náhodná čísla v rámci definovaný rozsah , musíme nastavit lowerbound a horní hranice v našem kódu VBA. Pro informaci. lowerbound je nejnižší číslo a horní hranice je nejvyšší počet v rozsah pro generátor náhodných čísel. Můžeme použít následující příkaz vzorec v našem kódu.

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 Generátor náhodných čísel - desetinné číslo

Úkol : Generování 10 náhodných čísel mezi 10 a 20 na adrese buňky A1:A10.

Kód : Vložte následující kód v editor Visual Basic a stiskněte F5 na spustit to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =randomNumber Next End Sub 

Výstup : Výše uvedený snímek obrazovky ukazuje 10 jedinečných náhodných čísel v v rozmezí 1 a 10.

2.2 Generátor náhodných čísel - celá čísla

V tomto příkladu použijeme příkaz Funkce VBA Int na odstranit na zlomková část z náhodná čísla .

Úkol : Generování 20 náhodných celých čísel mezi 1 a 20 na adrese buňky A1:B10.

Kód : Vložte následující kód v editor Visual Basic a stiskněte F5 na spustit to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub 

Výstup : Výše uvedený snímek obrazovky ukazuje 20 jedinečných náhodných celých čísel v v rozmezí 1 a 20.

Přečtěte si více: Generátor náhodných čísel v aplikaci Excel bez opakování (9 metod)

Podobná čtení

  • Generátor náhodných čísel s nástrojem pro analýzu dat a funkcemi v aplikaci Excel
  • Jak generovat náhodná data v aplikaci Excel (9 snadných metod)
  • Generátor náhodných pětimístných čísel v aplikaci Excel (7 příkladů)
  • Generátor náhodných čtyřmístných čísel v aplikaci Excel (8 příkladů)
  • Generování náhodného čísla ze seznamu v aplikaci Excel (4 způsoby)

3. Zadání desetinných míst pro generátor jedinečných náhodných čísel v aplikaci Excel VBA

Můžeme použít Funkce Round v našem kódu na zadejte na číslo z desetinná místa v náhodně generovaná jedinečná čísla . syntaxe funkce je-

Round(výraz, [numdecimalplaces])

Musíme zadejte na 2. argument podle našeho požadavek .

Úkol : Generování 20 náhodných čísel se dvěma desetinnými místy mezi 1 a 20 na adrese buňky A1:B10.

Kód : Vložte následující kód v editor Visual Basic a stiskněte F5 na spustit to.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub 

Výstup : Výše uvedený snímek obrazovky ukazuje 20 jedinečných náhodných celých čísel se 2 desetinnými místy v v rozmezí 1 a 20.

Přečtěte si více: Generování náhodného čísla v aplikaci Excel s desetinnými čísly (3 metody)

4. Vývoj uživatelského formuláře pro generátor náhodných čísel bez duplicit v aplikaci Excel VBA

Na tomto obrázku si ukážeme, jak použít funkci Uživatelský formulář na adrese Excel VBA na generovat náhodná čísla s žádné duplicity .

Úkol: Generování 20 náhodných čísel v rozsahu buněk A1:B10 pomocí Uživatelský formulář s vstupní hodnoty (i) lowerbound (ii) horní hranice (iii) počet desetinných míst.

Vytvoření formuláře UserForm:

Podle níže uvedených kroků vytvořte Uživatelský formulář s naším požadovaná vstupní pole .

  • Přejděte na Vývojář na kartě Pás karet aplikace Excel .
  • Klikněte na na Možnost Visual Basic.

  • V Visual Basic pro aplikace klikněte na Vložení rozevíracího seznamu na vybrat na Uživatelský formulář možnost.

  • V Přidání formuláře UserForm a štítek .
  • Titulek štítek jako LowerBound ve vlastnostech.

  • Přidat dva více štítky s názvem Horní svazek a DecimalPlaces .

  • Nyní přidejte tři pole TextBox v Uživatelský formulář .

  • V této fázi, přidat a CommandButton a pojmenujte ji Generovat .

  • Nyní, dvojklik na CommandButton a vložte následující kód v editor kódu .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Tisk F5 na spustit na kód a Uživatelský formulář má adresu se objevil na adrese .
  • Vložte lowerbound , horní hranice, a číslo z desetinná místa v Uživatelský formulář a stiskněte tlačítko Tlačítko Generovat .

Výstup : In buňky A1:B10 , existují 20 náhodných čísel s 2 desetinná místa v v rozmezí 1 až 30.

Přečtěte si více: Jak generovat náhodná čísla bez duplicit v aplikaci Excel (7 způsobů)

Na co nezapomenout

  • Mohli bychom také použít Funkce Fix místo Funkce Int na generovat jedinečná celá čísla . Funkce odstraňuje . zlomková část o číslo stejně jako Funkce Int .

Závěr

Nyní již víme, jak pomocí vhodných příkladů generovat jedinečná náhodná čísla pomocí VBA v Excelu. Doufejme, že vám to pomůže k jistějšímu používání této funkce. Jakékoli dotazy nebo připomínky nezapomeňte uvést v komentáři níže.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.