Innehållsförteckning
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.xlsm4 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 på 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 på 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 på 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 på 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 på 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 på 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 på 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 på 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.