"Excel VBA": atsitiktinių skaičių generatorius be pasikartojimų (4 pavyzdžiai)

  • Pasidalinti
Hugh West

Šiame straipsnyje pateikiami 4 pavyzdžiai atsitiktinių skaičių generatorius be pasikartojimų, naudodami "Excel" VBA. Čia savo kodui konfigūruoti naudosime "Excel" integruotą funkciją Rnd. Pasinerkime į pavyzdžius ir sužinokime unikalių atsitiktinių skaičių generavimo būdus.

Atsisiųsti praktikos sąsiuvinį

Atsisiųskite šį pratybų sąsiuvinį, kad galėtumėte atlikti pratimus skaitydami šį straipsnį.

Atsitiktinių skaičių generatorius be pasikartojimų.xlsm

4 atsitiktinių skaičių generatoriaus be pasikartojimų pavyzdžiai "Excel VBA" programoje

Kodo rašymas "Visual Basic" redaktoriuje

Į generuoti atsitiktinius skaičius be pasikartojimų. , turime Atviras ir rašyti VBA kodą į "Visual Basic" redaktorius. Sekite žingsniai į Atviras . "Visual Basic" redaktorius ir parašykite ten tam tikrą kodą.

  • Eikite į Kūrėjas skirtuką iš "Excel" juostelė .
  • Spustelėkite . "Visual Basic" parinktis.

  • Į "Visual Basic" programoms langą, spustelėkite Įterpti išskleidžiamąjį langelį į pasirinkite . Naujas modulis galimybė.

Dabar padėkite savo kodas viduje vizualinis kodo redaktorius ir paspauskite F5 į paleisti jį.

1. VBA Rnd funkcijos naudojimas atsitiktiniam skaičiui be pasikartojimų generuoti

Svetainė Rnd funkcija naudojamas "Excel" VBA į generuoti atsitiktinius skaičius kurie yra tarp 0 ir 1 išskirtinis.

Užduotis : Generuoti 10 atsitiktinių skaičių tarp 0 ir 1 svetainėje langelius A1:A10.

Kodas : Įdėkite šie dalykai kodas į "Visual Basic" redaktorius ir paspauskite F5 į paleisti jį.

 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 

Išėjimas : Pirmiau pateiktoje ekrano nuotraukoje matyti 10 unikalių atsitiktinių skaičių į nuo 0 iki 1.

Kodo paaiškinimas:

Šiame kode naudojome Rnd funkcija į įterpti atsitiktinius skaičius į ląstelių diapazonas A1:A10 . įterpimas a naujas numeris , naudojome Ciklas "Do While į žiūrėti numeris į iš anksto nustatytas ląstelių diapazonas (A1:A10) ar tai jau egzistuoja arba ne . Norėdami patikrinti egzistavimas numeris į ląstelių diapazonas kiekvieną kartą sukonfigūravome kodą su COUNTIF funkcija , Ši funkcija patikrinimai a naujas atsitiktinis skaičius į sąrašas jau esamus numerius prieš juos įterpiant.

Skaityti daugiau: "Excel" formulė atsitiktiniam skaičiui generuoti (5 pavyzdžiai)

2. Atsitiktinių skaičių generatorius apibrėžtoms apatinėms ir viršutinėms riboms be pasikartojimų

Į generuoti atsitiktinius skaičius per apibrėžtas diapazonas , turime nustatyti apatinė riba ir viršutinė riba mūsų VBA kode. apatinė riba yra mažiausias skaičius ir viršutinė riba yra didžiausias skaičius į diapazonas atsitiktinių skaičių generatoriui. formulė mūsų kode.

(viršutinė riba - apatinė riba + 1) * Rnd + apatinė riba

2.1 Atsitiktinių skaičių generatorius - dešimtainė

Užduotis : Generuoti 10 atsitiktinių skaičių tarp 10 ir 20 svetainėje langelius A1:A10.

Kodas : Įdėkite šie dalykai kodas į "Visual Basic" redaktorius ir paspauskite F5 į paleisti jį.

 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 

Išėjimas : Pirmiau pateiktoje ekrano nuotraukoje matyti 10 unikalių atsitiktinių skaičių į nuo 1 iki 10.

2.2 Atsitiktinių skaičių generatorius - sveikasis skaičius

Šioje iliustracijoje naudosime VBA funkcija Int į pašalinti . dalinė dalis atsitiktiniai skaičiai .

Užduotis : Generuoti 20 atsitiktinių sveikųjų skaičių tarp 1 ir 20 svetainėje ląstelės A1:B10.

Kodas : Įdėkite šie dalykai kodas į "Visual Basic" redaktorius ir paspauskite F5 į paleisti jį.

 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 

Išėjimas : Pirmiau pateiktoje ekrano nuotraukoje matyti 20 unikalių atsitiktinių sveikųjų skaičių į nuo 1 iki 20.

Skaityti daugiau: Atsitiktinių skaičių generatorius "Excel" programoje be pasikartojimų (9 metodai)

Panašūs skaitiniai

  • Atsitiktinių skaičių generatorius su "Excel" duomenų analizės įrankiu ir funkcijomis
  • Kaip "Excel" programoje generuoti atsitiktinius duomenis (9 paprasti metodai)
  • Atsitiktinių 5 skaitmenų skaičių generatorius "Excel" programoje (7 pavyzdžiai)
  • Atsitiktinių 4 skaitmenų skaičių generatorius "Excel" programoje (8 pavyzdžiai)
  • Atsitiktinio skaičiaus generavimas iš sąrašo "Excel" programoje (4 būdai)

3. Unikalaus atsitiktinių skaičių generatoriaus dešimtųjų vietų nurodymas "Excel VBA" programoje

Galime naudoti Apskritimo funkcija mūsų kode į nurodyti . numeris dešimtųjų tikslumu į atsitiktinai sugeneruoti unikalūs numeriai. . sintaksė funkcijos yra-

Apvalinti(išraiška, [numdecimalplaces])

Mums reikia nurodyti . 2 argumentas pagal mūsų reikalavimas .

Užduotis : Sugeneruoti 20 atsitiktinių skaičių su 2 ženklais po kablelio tarp 1 ir 20 svetainėje ląstelės A1:B10.

Kodas : Įdėkite šie dalykai kodas į "Visual Basic" redaktorius ir paspauskite F5 į paleisti jį.

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

Išėjimas : Pirmiau pateiktoje ekrano nuotraukoje matyti 20 unikalių atsitiktinių sveikųjų skaičių su 2 ženklais po kablelio į nuo 1 iki 20.

Skaityti daugiau: Atsitiktinio skaičiaus generavimas "Excel" programoje su dešimtainėmis dalimis (3 metodai)

4. Atsitiktinių skaičių generatoriaus naudotojo formos sukūrimas "Excel VBA" programa be pasikartojimų

Šioje iliustracijoje parodysime, kaip naudoti Naudotojo forma svetainėje "Excel" VBA į generuoti atsitiktinius skaičius su nėra dublikatų .

Užduotis: Generuoti 20 atsitiktinių skaičių ląstelių diapazone A1:B10 naudojant Naudotojo forma su įvesties vertės (i) apatinė riba (ii) viršutinė riba (iii) skaičių po kablelio.

Sukurkite UserForm:

Atlikite toliau nurodytus veiksmus, kad sukurtumėte Naudotojo forma su mūsų pageidaujami įvesties laukai .

  • Eikite į Kūrėjas skirtuką iš "Excel" juostelė .
  • Spustelėkite . "Visual Basic" parinktis.

  • Į "Visual Basic" programoms langą, spustelėkite Įterpti išskleidžiamąjį langelį į pasirinkite . Naudotojo forma galimybė.

  • Į Naudotojo formos pridėjimas a etiketė .
  • Antraštė etiketė kaip Žemutinė riba savybėse.

  • Pridėti du daugiau etiketės pavadinimu Viršutinis pluoštas ir DecimalPlaces .

  • Dabar pridėkite trys tekstiniai langeliai į Naudotojo forma .

  • Šiame etape, pridėti a CommandButton ir pavadinkite jį Sukurti .

  • Dabar, dukart spustelėkite . CommandButton ir įrašykite šiuos kodas į kodo redaktorius .
 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 

  • Paspauskite F5 į paleisti . kodas ir Naudotojo forma turi pasirodė .
  • Įdėkite apatinė riba , viršutinė riba, ir numeris dešimtųjų tikslumu į Naudotojo forma ir paspauskite Generuoti mygtuką .

Išėjimas : In ląstelės A1:B10 , yra 20 atsitiktinių skaičių su 2 ženklai po kablelio į nuo 1 iki 30.

Skaityti daugiau: Kaip "Excel" programoje generuoti atsitiktinius skaičius be pasikartojimų (7 būdai)

Dalykai, kuriuos reikia prisiminti

  • Taip pat galime naudoti Nustatyti funkciją vietoj Int funkcija į generuoti unikalius sveikuosius skaičius . Funkcija pašalina . dalinė dalis numeris kaip ir Int funkcija .

Išvada

Dabar žinome, kaip naudojant VBA programą "Excel" generuoti unikalius atsitiktinius skaičius, pasitelkiant tinkamus pavyzdžius. Tikimės, kad tai padės jums drąsiau naudotis šia funkcija. Jei turite klausimų ar pasiūlymų, nepamirškite jų pateikti toliau esančiame komentarų laukelyje.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.