Inhoudsopgave
Dit artikel illustreert 4 voorbeelden van willekeurige getallengenerator zonder duplicaten met behulp van VBA in Excel. Hier gebruiken we Excel's ingebouwde Rnd-functie om onze code te configureren. Laten we in de voorbeelden duiken om de technieken te leren om unieke willekeurige getallen te genereren.
Download Praktijk Werkboek
Download dit oefenwerkboek om te oefenen terwijl u dit artikel leest.
Random Number Generator zonder duplicaten.xlsm4 Voorbeelden van Random Number Generator zonder duplicaten in Excel VBA
Code schrijven in Visual Basic Editor
Naar willekeurige getallen genereren zonder duplicaten moeten we open en VBA-code schrijven in de visual basic editor. Volg de stappen naar open de visual basic editor en schrijf daar wat code.
- Ga naar de Ontwikkelaar tabblad van de Excel Lint .
- Klik op de Visual Basic optie.
- In de Visual Basic Voor Toepassingen venster, klik op de Dropdown invoegen naar selecteer de Nieuwe module optie.
Zet nu je code binnen de visuele code editor en druk op F5 naar ren het.
1. Gebruik van de VBA Rnd-functie om een willekeurig getal zonder duplicaten te genereren
De Rnd-functie wordt gebruikt in Excel VBA naar willekeurige getallen genereren die tussen 0 en en 1 exclusief.
Taak : Genereer 10 willekeurige getallen tussen 0 en 1 in cellen A1:A10.
Code : Plaats het volgende code in de visual basic editor en druk op F5 naar ren het.
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
Uitgang De bovenstaande schermafbeelding toont 10 unieke willekeurige getallen in de tussen 0 en 1.
Code Uitleg:
In deze code hebben we de Rnd-functie naar willekeurige getallen invoegen in de celbereik A1:A10 . voor het invoegen van a nieuw nummer hebben we een Do While-lus naar kijk voor de nummer in de voorgedefinieerd celbereik (A1:A10) of het bestaat al of niet Om de bestaan van de nummer in de celbereik elke keer, hebben we de code geconfigureerd met de Functie COUNTIF Deze functie controleert a nieuw willekeurig getal in de lijst van reeds bestaande nummers alvorens deze in te voegen.
Lees meer: Excel formule om willekeurig getal te genereren (5 voorbeelden)
2. Random Number Generator voor gedefinieerde onder- en bovengrenzen zonder doublures
Naar willekeurige getallen genereren binnen een gedefinieerd bereik moeten we de ondergrens en bovengrens in onze VBA-code. Ter informatie, de ondergrens is de laagste aantal en de bovengrens is de hoogste aantal in de reeks voor de random nummer generator. We kunnen het volgende gebruiken formule in onze code.
(bovengrens - ondergrens + 1) * Rnd + ondergrens
2.1 Willekeurige getallengenerator - Decimaal
Taak : Genereer 10 willekeurige getallen tussen 10 en 20 in cellen A1:A10.
Code : Plaats het volgende code in de visual basic editor en druk op F5 naar ren het.
Openbare Sub GenerateRandomNumNoDuplicates() ondergrens = 1 bovengrens = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (bovengrens - ondergrens + 1) * Rnd + ondergrens Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (bovengrens - ondergrens + 1) * Rnd + ondergrens Loop Rng.Value = (bovengrens - ondergrens + 1) * Rnd + ondergrens.randomNumber Volgende Einde Sub
Uitgang De bovenstaande schermafbeelding toont 10 unieke willekeurige getallen in de tussen 1 en 10.
2.2 Random Number Generator- Integer
In deze illustratie gebruiken we de VBA Int-functie naar verwijderen de fractioneel deel van de willekeurige getallen .
Taak : Genereer 20 willekeurige gehele getallen tussen 1 en 20 in cellen A1:B10.
Code : Plaats het volgende code in de visual basic editor en druk op F5 naar ren het.
Openbare Sub GenerateRandomNumNoDuplicates() ondergrens = 1 bovengrens = 20 Stel cellRange = Range("A1:B10") cellRange.Clear Voor elke Rng in cellRange randomNumber = Int((bovengrens - ondergrens + 1) * Rnd + ondergrens) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((bovengrens - ondergrens + 1) * Rnd + ondergrens) LoopRng.Value = randomNumber Volgende Einde Sub
Uitgang De bovenstaande schermafbeelding toont 20 unieke willekeurige gehele getallen in de tussen 1 en 20.
Lees meer: Random Number Generator in Excel zonder herhalingen (9 methoden)
Vergelijkbare lezingen
- Random Number Generator met data-analyse tool en functies in Excel
- Hoe willekeurige gegevens genereren in Excel (9 eenvoudige methoden)
- Willekeurige 5-cijferige getallengenerator in Excel (7 voorbeelden)
- Willekeurige 4-cijferige getallengenerator in Excel (8 voorbeelden)
- Genereer willekeurig getal uit lijst in Excel (4 manieren)
3. Decimalen opgeven voor unieke willekeurige getallengenerator in Excel VBA
We kunnen de Ronde functie in onze code naar specificeer de nummer van decimale plaatsen in de willekeurig gegenereerde unieke nummers . de syntax van de functie is-
Round(uitdrukking, [numdecimale plaatsen])
We moeten specificeer de 2e argument volgens onze vereiste .
Taak : Genereer 20 willekeurige getallen met 2 cijfers achter de komma tussen 1 en 20 in cellen A1:B10.
Code : Plaats het volgende code in de visual basic editor en druk op F5 naar ren het.
Public Sub GenerateRandomNumNoDuplicates() ondergrens = 1 bovengrens = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((bovengrens - ondergrens + 1) * Rnd + ondergrens, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((bovengrens - ondergrens + 1) * Rnd + ondergrens, 2)Loop Rng.Value = randomNumber Next End Sub
Uitgang De bovenstaande schermafbeelding toont 20 unieke willekeurige gehele getallen met 2 decimalen in de tussen 1 en 20.
Lees meer: Willekeurig getal genereren in Excel met decimalen (3 methoden)
4. Ontwikkel een Userform voor Random Number Generator zonder duplicaten in Excel VBA
In deze illustratie laten we zien hoe je een UserForm in Excel VBA naar willekeurige getallen genereren met geen duplicaten .
Taak: Genereer 20 willekeurige getallen in celbereik A1:B10 met behulp van een UserForm met de invoerwaarden (i) ondergrens (ii) bovengrens (iii) aantal decimalen.
Maak een UserForm:
Volg de onderstaande stappen om een UserForm met onze gewenste invoervelden .
- Ga naar de Ontwikkelaar tabblad van de Excel Lint .
- Klik op de Visual Basic optie.
- In de Visual Basic Voor Toepassingen venster, klik op de Dropdown invoegen naar selecteer de UserForm optie.
- In de UserForm toevoegen a label .
- Caption de label als Ondergrens in de eigenschappen.
- Toevoegen twee meer etiketten genaamd Upperbund en DecimalPlaces .
- Voeg nu toe drie tekstvakken in de UserForm .
- In dit stadium, voeg toe a CommandButton en noem het Genereer .
- Nu, dubbelklik de CommandButton en zet het volgende code in de code editor .
Private Sub CommandButton1_Click() Dim lowerbound als Integer Dim upperbound als Integer Dim decimalPlaces als 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
- Druk op F5 naar ren de code en de UserForm heeft verscheen .
- Zet de ondergrens , bovengrens, en de nummer van decimale plaatsen in de UserForm en raakte de Knop genereren .
Uitgang : In cellen A1:B10 zijn er 20 willekeurige nummers met 2 decimalen in de van 1 tot 30.
Lees meer: Hoe willekeurige getallen genereren zonder duplicaten in Excel (7 manieren)
Dingen om te onthouden
- We zouden ook de Herstel functie in plaats van de Int-functie naar unieke gehele getallen genereren De functie verwijdert de fractioneel deel van een nummer net als de Int-functie .
Conclusie
Nu weten we hoe we unieke willekeurige getallen kunnen genereren met behulp van VBA in Excel met behulp van geschikte voorbeelden. Hopelijk helpt het u om de functionaliteit met meer vertrouwen te gebruiken. Eventuele vragen of suggesties vergeet ze niet in het commentaarvak hieronder te plaatsen.