Obsah
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.xlsm4 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.