Excel VBA: Generator af tilfældige tal uden dubletter (4 eksempler)

  • Del Dette
Hugh West

Denne artikel illustrerer 4 eksempler på generator af tilfældige tal uden dubletter ved hjælp af VBA i Excel. Her bruger vi Excels indbyggede Rnd-funktion til at konfigurere vores kode. Lad os dykke ned i eksemplerne for at lære teknikkerne til at generere unikke tilfældige tal.

Download arbejdsbog til øvelser

Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.

Generator af tilfældige tal uden dubletter.xlsm

4 eksempler på tilfældig talgenerator uden dubletter i Excel VBA

Skriv kode i Visual Basic Editor

Til generere tilfældige tal uden dubletter , skal vi åben og skrive VBA-kode i den visual basic editor. Følg den trin til åben visual basic editor og skrive noget kode der.

  • Gå til Udvikler fra fanen Excel-bånd .
  • Klik på Visual Basic-indstilling.

  • I den Visual Basic til applikationer vindue, skal du klikke på Indsæt dropdown til Vælg Nyt modul mulighed.

Sæt nu din kode inden for den visuel kodeeditor og Tryk på F5 til køre det.

1. Brug af VBA Rnd-funktionen til at generere tilfældige tal uden dubletter

Rnd-funktion anvendes i Excel VBA til generere tilfældige tal der er mellem 0 og 1 eksklusiv.

Opgave : Generer 10 tilfældige tal mellem 0 og 1 cellerne A1:A10.

Kode : Indsæt følgende kode i den visual basic editor og tryk på F5 til køre det.

 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 

Udgang : Ovenstående skærmbillede viser 10 unikke tilfældige tal i den mellem 0 og 1.

Kodeforklaring:

I denne kode har vi brugt Rnd-funktion til indsætte tilfældige tal i den celleområde A1:A10 . Før Indsættelse af a nyt nummer , har vi brugt en Do While Loop til se for den nummer i den foruddefineret celleområde (A1:A10) om det findes allerede eller ikke . for at kontrollere den eksistens af den nummer i den celleområde hver gang, konfigurerede vi koden med COUNTIF-funktion , Denne funktion kontrollerer a nyt tilfældigt tal i den liste allerede eksisterende numre, før det indsættes.

Læs mere: Excel-formel til at generere tilfældige tal (5 eksempler)

2. Generator af tilfældige tal for definerede nedre og øvre grænser uden dubletter

Til generere tilfældige tal inden for en defineret område , skal vi indstille lavere bundne og øvre grænse i vores VBA-kode. Til orientering kan lavere bundne er den laveste antal og øvre grænse er den højeste antal i den rækkevidde til generatoren af tilfældige tal. Vi kan bruge følgende formel i vores kode.

(øvre grænse - nedre grænse + 1) * Rnd + nedre grænse

2.1 Generator af tilfældige tal - decimaltal

Opgave : Generer 10 tilfældige tal mellem 10 og 20 cellerne A1:A10.

Kode : Indsæt følgende kode i den visual basic editor og tryk på F5 til køre det.

 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 Næste End Sub 

Udgang : Ovenstående skærmbillede viser 10 unikke tilfældige tal i den mellem 1 og 10.

2.2 Generator af tilfældige tal - hele tal

I denne illustration bruger vi VBA Int-funktion til fjerne brøkdel fra den tilfældige tal .

Opgave : Generer 20 tilfældige heltalstal mellem 1 og 20 cellerne A1:B10.

Kode : Indsæt følgende kode i den visual basic editor og tryk på F5 til køre det.

 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 

Udgang : Ovenstående skærmbillede viser 20 unikke tilfældige hele tal i den mellem 1 og 20.

Læs mere: Generator af tilfældige tal i Excel uden gentagelser (9 metoder)

Lignende læsninger

  • Generator af tilfældige tal med dataanalyseværktøj og funktioner i Excel
  • Sådan genererer du tilfældige data i Excel (9 nemme metoder)
  • Generator af tilfældige 5-cifrede tal i Excel (7 eksempler)
  • Generator af tilfældige 4-cifrede tal i Excel (8 eksempler)
  • Generer tilfældige tal fra en liste i Excel (4 måder)

3. Angiv decimalpladser for unik tilfældig talgenerator i Excel VBA

Vi kan bruge den Rund funktion i vores kode til angiv nummer decimaler i den tilfældigt genererede unikke numre . syntaks af funktionen er-

Round(udtryk, [antal decimalpladser])

Vi er nødt til at angiv 2. argument som i henhold til vores krav .

Opgave : Generer 20 tilfældige tal med 2 decimaler mellem 1 og 20 cellerne A1:B10.

Kode : Indsæt følgende kode i den visual basic editor og tryk på F5 til køre det.

 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 

Udgang : Ovenstående skærmbillede viser 20 unikke tilfældige hele tal med 2 decimaler i den mellem 1 og 20.

Læs mere: Generer tilfældige tal i Excel med decimaler (3 metoder)

4. Udvikle en brugerformular til tilfældig nummergenerator uden dubletter i Excel VBA

I denne illustration viser vi, hvordan man bruger en UserForm Excel VBA til generere tilfældige tal med ingen dubletter .

Opgave: Generer 20 tilfældige tal i celleområde A1:B10 ved hjælp af en UserForm med den inputværdier (i) lavere bundne (ii) øvre grænse (iii) antallet af decimaler.

Opret en UserForm:

Følg nedenstående trin for at oprette en UserForm med vores ønskede inputfelter .

  • Gå til Udvikler fra fanen Excel-bånd .
  • Klik på Visual Basic-indstilling.

  • I den Visual Basic til applikationer vindue, skal du klikke på Indsæt dropdown til Vælg UserForm mulighed.

  • I den UserForm tilføj a etiket .
  • Billedtekst etiket som LowerBound i egenskaberne.

  • Tilføj to mere etiketter ved navn Upperbund og DecimalPlaces .

  • Tilføj nu tre tekstbokse i den UserForm .

  • På dette stadium, tilføj a CommandButton og navngive den Generer .

  • Nu, dobbeltklik CommandButton og indsæt følgende kode i den kode-editor .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.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 

  • Tryk på F5 til køre kode og UserForm har dukkede op på .
  • Sæt den lavere bundne , øvre grænse, og nummer decimaler i den UserForm og ramte den Generer knap .

Udgang : I celler A1:B10 , er der 20 tilfældige tal med 2 decimaler i den mellem 1 og 30.

Læs mere: Sådan genereres tilfældige numre uden dubletter i Excel (7 måder)

Ting at huske

  • Vi kunne også bruge Fastgør funktion i stedet for den Int-funktion til generere unikke hele tal . funktionen fjerner brøkdel af en nummer ligesom den Int-funktion .

Konklusion

Nu ved vi, hvordan man genererer unikke tilfældige tal ved hjælp af VBA i Excel ved hjælp af passende eksempler. Forhåbentlig vil det hjælpe dig med at bruge funktionaliteten mere sikkert. Eventuelle spørgsmål eller forslag glem ikke at sætte dem i kommentarfeltet nedenfor.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.