Excel VBA: Random Number Generator zonder duplicaten (4 voorbeelden)

  • Deel Dit
Hugh West

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.xlsm

4 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.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.