Excel VBA: Generator de numere aleatorii fără duplicate (4 exemple)

  • Imparte Asta
Hugh West

Acest articol ilustrează 4 exemple de generator de numere aleatoare fără duplicate folosind VBA în Excel. Aici vom folosi funcția Rnd încorporată în Excel pentru a configura codul nostru. Să ne scufundăm în exemple pentru a învăța tehnicile de generare a numerelor aleatoare unice.

Descărcați caietul de practică

Descărcați acest caiet de exerciții pentru a vă exercita în timp ce citiți acest articol.

Generator de numere aleatorii fără duplicate.xlsm

4 Exemple de Generator de numere aleatorii fără duplicate în Excel VBA

Scrieți cod în Visual Basic Editor

La generează numere aleatoare fără duplicate , trebuie să deschis și scrieți cod VBA în editor visual basic. Urmați etape la deschis la editor visual basic și să scrieți niște cod acolo.

  • Mergeți la Dezvoltator din fila Panglica Excel .
  • Faceți clic pe la Opțiunea Visual Basic.

  • În Visual Basic pentru aplicații faceți clic pe fereastra Introduceți picătură la selectați la Modul nou opțiune.

Acum, pune-ți cod în interiorul editor vizual de cod și apăsați F5 la rulează it.

1. Utilizarea funcției VBA Rnd pentru a genera un număr aleatoriu fără duplicate

The Funcția Rnd este utilizat în Excel VBA la generează numere aleatorii care sunt între 0 și 1 exclusiv.

Sarcină : Generarea a 10 numere aleatoare între 0 și 1 în celulele A1:A10.

Cod : Introduceți următoarele cod în editor visual basic și apăsați F5 la rulează it.

 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 

Ieșire : Captura de ecran de mai sus arată 10 numere aleatoare unice în între 0 și 1.

Codul Explicație:

În acest cod, am folosit Funcția Rnd la introduceți numere aleatorii în intervalul de celule A1:A10 . Înainte introducerea a număr nou , am folosit un Fă în timp ce bucla la uite pentru număr în interval de celule predefinit (A1:A10) dacă există deja sau nu Pentru a verifica existență a număr în interval de celule de fiecare dată, am configurat codul cu Funcția COUNTIF , Această funcție verificări a un nou număr aleatoriu în lista de numerele deja existente înainte de a le introduce.

Citește mai mult: Formula Excel pentru a genera numere aleatorii (5 exemple)

2. Generator de numere aleatoare pentru limite inferioare și superioare definite fără duplicate

La generează numere aleatorii în cadrul unui interval definit , trebuie să stabilim valoarea cu limita inferioară și limita superioară în codul nostru VBA. Pentru informații, se poate folosi cu limita inferioară este cel mai mic număr și limita superioară este cel mai mare număr în gama pentru generatorul de numere aleatoare. Putem folosi următoarea formulă formula în codul nostru.

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 Generator de numere aleatoare - Decimal

Sarcină : Generarea a 10 numere aleatoare între 10 și 20 în celulele A1:A10.

Cod : Introduceți următoarele cod în editor visual basic și apăsați F5 la rulează it.

 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 Next End Sub 

Ieșire : Captura de ecran de mai sus arată 10 numere aleatoare unice în între 1 și 10.

2.2 Generator de numere aleatoare - numere întregi

În această ilustrație, vom folosi Funcția VBA Int la eliminați la partea fracționară de la numere aleatoare .

Sarcină : Generarea a 20 de numere întregi aleatoare între 1 și 20 în celulele A1:B10.

Cod : Introduceți următoarele cod în editor visual basic și apăsați F5 la rulează it.

 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 

Ieșire : Captura de ecran de mai sus arată 20 numere întregi aleatoare unice în între 1 și 20.

Citește mai mult: Generator de numere aleatorii în Excel fără repetiții (9 metode)

Lecturi similare

  • Generator de numere aleatorii cu instrument de analiză a datelor și funcții în Excel
  • Cum să generați date aleatorii în Excel (9 metode simple)
  • Generator aleatoriu de numere cu 5 cifre în Excel (7 exemple)
  • Generator aleatoriu de numere cu 4 cifre în Excel (8 exemple)
  • Generarea unui număr aleatoriu din listă în Excel (4 moduri)

3. Specificați locurile zecimale pentru generatorul de numere aleatorii unice în Excel VBA

Putem folosi Funcția rotundă în codul nostru la specificați la număr de zecimale în numere unice generate aleatoriu . sintaxă a funcției este-

Rotund(expresie, [numdecimalplaces])

Trebuie să specificați la Al doilea argument în conformitate cu cerință .

Sarcină : Generarea a 20 de numere aleatoare cu 2 zecimale între 1 și 20 în celulele A1:B10.

Cod : Introduceți următoarele cod în editor visual basic și apăsați F5 la rulează it.

 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)Bucla Rng.Value = randomNumber Next End Sub 

Ieșire : Captura de ecran de mai sus arată 20 numere întregi aleatoare unice cu 2 zecimale în între 1 și 20.

Citește mai mult: Generarea unui număr aleatoriu în Excel cu zecimale (3 metode)

4. Dezvoltarea unui formular de utilizator pentru generatorul de numere aleatorii fără duplicate în Excel VBA

În această ilustrație, vom arăta cum să folosim un UserForm în Excel VBA la generează numere aleatorii cu nu există duplicate .

Sarcină: Generarea a 20 de numere aleatorii în intervalul de celule A1:B10 folosind un UserForm cu valori de intrare (i) cu limita inferioară (ii) limita superioară (iii) numărul de zecimale.

Creați un UserForm:

Urmați pașii de mai jos pentru a crea un UserForm cu câmpurile de intrare dorite .

  • Mergeți la Dezvoltator din fila Panglica Excel .
  • Faceți clic pe la Opțiunea Visual Basic.

  • În Visual Basic pentru aplicații faceți clic pe fereastra Introduceți picătură la selectați la UserForm opțiune.

  • În UserForm adaugă a eticheta .
  • Legenda eticheta ca LowerBound în proprietăți.

  • Adăugați două mai mult etichete numit Upperbund și Locuri zecimale .

  • Acum adăugați trei TextBox-uri în UserForm .

  • În această etapă, adăugați a CommandButton și o numesc Generați .

  • Acum, dublu clic la CommandButton și puneți următoarele cod în editor de cod .
 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 

  • Presa F5 la rulează la cod și UserForm are a apărut .
  • Puneți cu limita inferioară , cu limită superioară, și număr de zecimale în UserForm și a lovit Generare buton .

Ieșire : În celulele A1:B10 , există 20 de numere aleatorii cu 2 zecimale în de la 1 la 30.

Citește mai mult: Cum să generați numere aleatorii fără duplicate în Excel (7 moduri)

Lucruri de reținut

  • De asemenea, am putea folosi și Funcția de fixare în loc de Funcția Int la generează numere întregi unice Funcția elimină la partea fracționară a unui număr la fel ca și Funcția Int .

Concluzie

Acum, știm cum să generăm numere aleatoare unice folosind VBA în Excel cu ajutorul exemplelor potrivite. Sperăm că vă va ajuta să utilizați funcționalitatea cu mai multă încredere. Orice întrebări sau sugestii nu uitați să le puneți în caseta de comentarii de mai jos.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.