Obsah
Tento článok ilustruje 4 príklady generátor náhodných čísel bez duplikátov pomocou VBA v programe Excel. Na konfiguráciu nášho kódu tu použijeme vstavanú funkciu Rnd programu Excel. Ponorme sa do príkladov, aby sme sa naučili techniky generovania jedinečných náhodných čísel.
Stiahnite si cvičebnicu
Stiahnite si tento cvičebný zošit, aby ste si počas čítania tohto článku precvičili svoje zručnosti.
Generátor náhodných čísel bez duplikátov.xlsm4 príklady generátora náhodných čísel bez duplikátov v programe Excel VBA
Písanie kódu v editore jazyka Visual Basic
Na generovať náhodné čísla bez duplikátov , musíme otvoriť a napísať kód VBA v editor Visual Basic. Sledujte kroky na otvoriť . editor Visual Basic a napíšte tam nejaký kód.
- Prejdite na Vývojár z karty Pásmo aplikácie Excel .
- Kliknite na . . Možnosť Visual Basic.
- V Visual Basic pre aplikácie kliknite na okno Vloženie rozbaľovacieho zoznamu na vybrať . Nový modul možnosť.
Teraz si dajte kód vo vnútri vizuálny editor kódu a stlačiť kláves F5 na spustiť to.
1. Použitie funkcie VBA Rnd na generovanie náhodného čísla bez duplikátov
Stránka Funkcia Rnd sa používa v Excel VBA na generovať náhodné čísla ktoré sú medzi 0 a 1 exkluzívne.
Úloha : Generovanie 10 náhodných čísel medzi 0 a 1 na stránke bunky A1:A10.
Kód : Vložte nasledujúce kód v editor Visual Basic a stlačte F5 na spustiť 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 : Vyššie uvedený obrázok zobrazuje 10 jedinečných náhodných čísel v rozsah 0 a 1.
Vysvetlenie kódu:
V tomto kóde sme použili Funkcia Rnd na vložiť náhodné čísla v rozsah buniek A1:A10 . vkladanie a nové číslo , sme použili Cyklus Do While na pozrite sa na pre číslo v preddefinovaný rozsah buniek (A1:A10) či je to už existuje alebo nie Kontrola existencia z číslo v rozsah buniek zakaždým sme nakonfigurovali kód pomocou Funkcia COUNTIF , Táto funkcia kontroly a nové náhodné číslo v zoznam z už existujúce čísla pred vložením.
Prečítajte si viac: Vzorec programu Excel na generovanie náhodného čísla (5 príkladov)
2. Generátor náhodných čísel pre definované dolné a horné hranice bez duplikátov
Na generovanie náhodných čísel v rámci definovaný rozsah , musíme nastaviť dolná hranica a horná hranica v našom kóde VBA. dolná hranica je najnižšie číslo a horná hranica je najvyššie číslo v rozsah pre generátor náhodných čísel. Môžeme použiť tento vzorec v našom kóde.
(upperbound - lowerbound + 1) * Rnd + lowerbound
2.1 Generátor náhodných čísel - desatinné číslo
Úloha : Generovanie 10 náhodných čísel medzi 10 a 20 na stránke bunky A1:A10.
Kód : Vložte nasledujúce kód v editor Visual Basic a stlačte F5 na spustiť 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 : Vyššie uvedený obrázok zobrazuje 10 jedinečných náhodných čísel v rozsah 1 a 10.
2.2 Generátor náhodných čísel - celé číslo
Na tomto obrázku použijeme Funkcia VBA Int na odstrániť . zlomková časť z náhodné čísla .
Úloha : Generovanie 20 náhodných celých čísel medzi 1 a 20 na stránke bunky A1:B10.
Kód : Vložte nasledujúce kód v editor Visual Basic a stlačte F5 na spustiť 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 : Vyššie uvedený obrázok zobrazuje 20 jedinečných náhodných celých čísel v rozsah 1 a 20.
Prečítajte si viac: Generátor náhodných čísel v programe Excel bez opakovania (9 metód)
Podobné čítania
- Generátor náhodných čísel s nástrojom na analýzu údajov a funkciami v programe Excel
- Ako generovať náhodné údaje v programe Excel (9 jednoduchých metód)
- Generátor náhodných 5-ciferných čísel v programe Excel (7 príkladov)
- Generátor náhodných štvorciferných čísel v programe Excel (8 príkladov)
- Generovanie náhodného čísla zo zoznamu v programe Excel (4 spôsoby)
3. Zadanie desatinných miest pre jedinečný generátor náhodných čísel v programe Excel VBA
Môžeme použiť Funkcia Round v našom kóde na uveďte . číslo z desatinné miesta v náhodne vygenerované jedinečné čísla . syntax funkcie je-
Zaokrúhliť(výraz, [numdecimalplaces])
Musíme uveďte . 2. argument podľa našich požiadavka .
Úloha : Generovanie 20 náhodných čísel s 2 desatinnými miestami medzi 1 a 20 na stránke bunky A1:B10.
Kód : Vložte nasledujúce kód v editor Visual Basic a stlačte F5 na spustiť 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 : Vyššie uvedený obrázok zobrazuje 20 jedinečných náhodných celých čísel s 2 desatinnými miestami v rozsah 1 a 20.
Prečítajte si viac: Generovanie náhodného čísla v programe Excel s desatinnými číslami (3 metódy)
4. Vývoj užívateľského formulára pre generátor náhodných čísel bez duplikátov v programe Excel VBA
Na tomto obrázku si ukážeme, ako použiť Používateľský formulár na stránke Excel VBA na generovanie náhodných čísel s žiadne duplikáty .
Úloha: Generovanie 20 náhodných čísel v rozsahu buniek A1:B10 pomocou Používateľský formulár s vstupné hodnoty (i) dolná hranica (ii) horná hranica (iii) počet desatinných miest.
Vytvorenie formulára UserForm:
Podľa nasledujúcich krokov vytvorte Používateľský formulár s našou požadované vstupné polia .
- Prejdite na Vývojár z karty Pásmo aplikácie Excel .
- Kliknite na . . Možnosť Visual Basic.
- V Visual Basic pre aplikácie kliknite na okno Vloženie rozbaľovacieho zoznamu na vybrať . Používateľský formulár možnosť.
- V Pridať užívateľský formulár a štítok .
- Titulok štítok ako LowerBound vo vlastnostiach.
- Pridať dva viac štítky s názvom Horný zväzok a DecimalPlaces .
- Teraz pridajte tri textové polia v Používateľský formulár .
- V tejto fáze, pridať a CommandButton a pomenujte ho Generovať .
- Teraz, dvojité kliknutie . CommandButton a vložte nasledujúce 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
- Tlač F5 na spustiť . kód a Používateľský formulár má sa objavili na stránke . .
- Vložte dolná hranica , horná hranica, a číslo z desatinné miesta v Používateľský formulár a stlačte tlačidlo Generovať tlačidlo .
Výstup : V bunky A1:B10 , existujú 20 náhodných čísel s 2 desatinné miesta v v rozsahu 1 až 30.
Prečítajte si viac: Ako generovať náhodné čísla bez duplikátov v programe Excel (7 spôsobov)
Čo si treba zapamätať
- Mohli by sme tiež použiť Funkcia Fix namiesto Funkcia Int na generovanie jedinečných celých čísel . Funkcia odstraňuje . zlomková časť o číslo rovnako ako Funkcia Int .
Záver
Teraz už vieme, ako pomocou vhodných príkladov generovať jedinečné náhodné čísla pomocou VBA v programe Excel. Dúfame, že vám to pomôže používať túto funkciu s väčšou istotou. Akékoľvek otázky alebo návrhy nezabudnite uviesť do komentára nižšie.