Excel VBA: Slumpmässig nummergenerator utan dubbletter (4 exempel)

  • Dela Detta
Hugh West

Denna artikel visar 4 exempel på slumptalsgenerator utan dubbletter med hjälp av VBA i Excel. Här använder vi Excels inbyggda Rnd-funktion för att konfigurera vår kod. Låt oss dyka in i exemplen för att lära oss tekniken för att generera unika slumptal.

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

Slumpmässig nummergenerator utan dubbletter.xlsm

4 exempel på slumpmässig nummergenerator utan dubbletter i Excel VBA

Skriva kod i Visual Basic Editor

Till generera slumpmässiga nummer utan dubbletter Vi måste öppna och skriva VBA-kod i den Visual Basic-redigerare. Följ den steg till öppna Visual Basic Editor och skriva lite kod där.

  • Gå till Utvecklare från fliken Excel-bandet .
  • Klicka på Visual Basic-alternativet.

  • I Visual Basic för tillämpningar fönstret, klickar du på Infoga en rullgardinsmeny till Välj Ny modul alternativ.

Lägg nu din kod i den inre delen av visuell kodredigerare och Tryck på F5 till kör den.

1. Användning av VBA Rnd-funktionen för att generera slumpmässiga nummer utan dubbletter

Rnd-funktion används i Excel VBA till generera slumptal som är mellan 0 och 1 exklusivt.

Uppgift : Generera 10 slumpmässiga nummer mellan 0 och 1 cellerna A1:A10.

Kod : Infoga följande kod i den Visual Basic Editor och tryck på F5 till kör den.

 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 

Utgång : Ovanstående skärmdump visar 10 unika slumpmässiga nummer i den mellan 0 och 1.

Kodförklaring:

I den här koden använde vi Rnd-funktion till infoga slumpmässiga nummer i den cellområde A1:A10 . Innan Insättning av a nytt nummer , använde vi en Gör medan-slinga till titta på för nummer i den fördefinierat cellområde (A1:A10) om den finns redan. eller . inte . för att kontrollera existens av den nummer i den cellområde Varje gång konfigurerade vi koden med koden för COUNTIF-funktion , Denna funktion Kontroller a nytt slumpmässigt nummer i den lista redan existerande nummer innan det läggs in.

Läs mer: Excel-formel för att generera slumpmässiga tal (5 exempel)

2. Slumpmässig nummergenerator för definierad nedre och övre gräns utan dubbletter

Till generera slumptal inom en definierat intervall måste vi ställa in nedre gräns och övre gräns i vår VBA-kod. För information, den nedre gräns är den lägsta antal och övre gräns är den högsta antal i den sortiment för slumptalsgeneratorn. Vi kan använda följande formel i vår kod.

(övre gräns - nedre gräns + 1) * Rnd + nedre gräns

2.1 Generator för slumpmässiga tal - decimaltal

Uppgift : Generera 10 slumpmässiga nummer mellan 10 och 20 cellerna A1:A10.

Kod : Infoga följande kod i den Visual Basic Editor och tryck på F5 till kör den.

 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ästa End Sub 

Utgång : Ovanstående skärmdump visar 10 unika slumpmässiga nummer i den mellan 1 och 10.

2.2 Generator för slumpmässiga tal - heltal

I den här illustrationen använder vi VBA Int-funktion till ta bort bråkdel från slumpmässiga nummer .

Uppgift : Generera 20 slumpmässiga heltalstal mellan 1 och 20 cellerna A1:B10.

Kod : Infoga följande kod i den Visual Basic Editor och tryck på F5 till kör den.

 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 Nästa End Sub 

Utgång : Ovanstående skärmdump visar 20 unika slumpmässiga heltalstal i den mellan 1 och 20.

Läs mer: Slumpmässig nummergenerator i Excel utan upprepningar (9 metoder)

Liknande läsningar

  • Slumpmässig talgenerator med dataanalysverktyg och funktioner i Excel
  • Hur man genererar slumpmässiga data i Excel (9 enkla metoder)
  • Slumpmässig 5-siffrig talgenerator i Excel (7 exempel)
  • Slumpmässig 4-siffrig talgenerator i Excel (8 exempel)
  • Generera slumpmässiga nummer från en lista i Excel (4 sätt)

3. Ange decimaler för unik slumpmässig nummergenerator i Excel VBA

Vi kan använda Rund funktion i vår kod till ange nummer decimalställen i den slumpmässigt genererade unika nummer . syntax av funktionen är-

Avrunda(uttryck, [antal decimaler])

Vi måste ange Andra argumentet i enlighet med vår krav .

Uppgift : Generera 20 slumpmässiga tal med 2 decimaler. mellan 1 och 20 cellerna A1:B10.

Kod : Infoga följande kod i den Visual Basic Editor och tryck på F5 till kör den.

 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 Nästa End Sub 

Utgång : Ovanstående skärmdump visar 20 unika slumpmässiga heltalstal med 2 decimaler i den mellan 1 och 20.

Läs mer: Generera slumpmässiga tal i Excel med decimaler (3 metoder)

4. Utveckla ett användarformulär för slumpmässig nummergenerator med inga dubbletter i Excel VBA

I den här illustrationen visar vi hur du använder en UserForm Excel VBA till generera slumptal med inga dubbletter .

Uppgift: Generera 20 slumpmässiga nummer i cellintervallet A1:B10 med hjälp av en UserForm med den Ingångsvärden. (i) nedre gräns (ii) övre gräns (iii) antal decimaler.

Skapa en UserForm:

Följ stegen nedan för att skapa en UserForm med vår önskade inmatningsfält .

  • Gå till Utvecklare från fliken Excel-bandet .
  • Klicka på Visual Basic-alternativet.

  • I Visual Basic för tillämpningar fönstret, klickar du på Infoga en rullgardinsmeny till Välj UserForm alternativ.

  • I Lägg till UserForm a etikett .
  • Bildtext etikett som Nedre gräns i egenskaperna.

  • Lägg till två mer etiketter som heter Upperbund och DecimalPlaces .

  • Lägg nu till tre textfält i den UserForm .

  • I detta skede, Lägg till a CommandButton och namnge den Generera .

  • Nu, dubbelklicka CommandButton och lägger in följande kod i den kodredigerare .
 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 

  • Tryck på F5 till kör kod och UserForm har dök upp .
  • Sätt in nedre gräns , övre bunden, och nummer decimalställen i den UserForm och slå till på Generera en knapp .

Utgång : In celler A1:B10 , det finns 20 slumpmässiga nummer med 2 decimaler i den mellan 1 och 30.

Läs mer: Hur man genererar slumpmässiga nummer utan dubbletter i Excel (7 sätt)

Saker att komma ihåg

  • Vi kan också använda Fixa funktionen i stället för Int-funktion till generera unika heltalstal . Funktionen tar bort bråkdel av en nummer precis som den Int-funktion .

Slutsats

Nu vet vi hur man genererar unika slumptal med hjälp av VBA i Excel med hjälp av lämpliga exempel. Förhoppningsvis hjälper det dig att använda funktionaliteten mer självsäkert. Om du har några frågor eller förslag, glöm inte att skriva dem i kommentarsfältet nedan.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.