Excel VBA: Satunnaislukugeneraattori, jossa ei ole kaksoiskappaleita (4 esimerkkiä)

  • Jaa Tämä
Hugh West

Tässä artikkelissa kuvataan 4 esimerkkiä satunnaislukugeneraattori ilman päällekkäisyyksiä Excelin VBA:n avulla. Tässä käytämme Excelin sisäänrakennettua Rnd-funktiota koodimme konfigurointiin. Sukelletaan esimerkkeihin, jotta opimme tekniikat ainutlaatuisten satunnaislukujen luomiseksi.

Lataa harjoituskirja

Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.

Satunnaislukugeneraattori, jossa ei ole kaksoiskappaleita.xlsmsm

4 esimerkkiä satunnaislukugeneraattorista, jossa ei ole päällekkäisyyksiä Excel VBA: ssa

Kirjoita koodia Visual Basic Editorissa

Osoitteeseen tuottaa satunnaislukuja, joissa ei ole kaksoiskappaleita , meidän on avoin ja kirjoittaa VBA-koodia vuonna Visual Basic Editor. Seuraa vaiheet osoitteeseen avoin ... visuaalinen perus editori ja kirjoita sinne koodia.

  • Mene osoitteeseen Kehittäjä välilehdeltä Excel-nauha .
  • Klikkaa ... Visual Basic -vaihtoehto.

  • Vuonna Visual Basic sovelluksia varten ikkunassa, napsauta Lisää pudotusvalikko osoitteeseen valitse ... Uusi moduuli vaihtoehto.

Laita nyt koodi sisällä visuaalinen koodieditori ja paina F5 osoitteeseen ajaa se.

1. VBA Rnd -funktion käyttö satunnaisluvun luomiseksi ilman kaksoiskappaleita

The Rnd-toiminto käytetään Excel VBA osoitteeseen tuottaa satunnaislukuja jotka ovat välillä 0 ja 1 yksinoikeudella.

Tehtävä : Luo 10 satunnaislukua välillä 0 ja 1 osoitteessa solut A1:A10.

Koodi : Lisää seuraavat koodi vuonna visuaalinen perus editori ja paina F5 osoitteeseen ajaa se.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange satunnaisluku = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, satunnaisluku)>= 1 satunnaisluku = Rnd Loop Rng.Value = satunnaisluku Next End Sub 

Lähtö : Yllä oleva kuvakaappaus osoittaa 10 ainutlaatuista satunnaislukua vuonna välillä 0 ja 1.

Koodi Selitys:

Tässä koodissa käytimme Rnd-toiminto osoitteeseen lisää satunnaislukuja vuonna solualue A1:A10 . lisäämällä a uusi numero , käytimme Do While silmukka osoitteeseen katso varten numero vuonna ennalta määritetty solualue (A1:A10) onko se on jo olemassa tai ei . Tarkistaaksesi olemassaolo of the numero vuonna solualue joka kerta, konfiguroimme koodin koodin kanssa COUNTIF-toiminto , Tämä toiminto tarkastukset a uusi satunnaisluku vuonna lista of jo olemassa olevat numerot ennen sen lisäämistä.

Lue lisää: Excel-kaava satunnaisluvun luomiseksi (5 esimerkkiä)

2. Satunnaislukugeneraattori määritellyille Lowerbound- ja Upperbound-arvoille, joissa ei ole kaksoiskappaleita.

Osoitteeseen tuottaa satunnaislukuja sisällä määritelty alue , meidän on asetettava lowerbound ja yläraja VBA-koodissamme. Tiedoksi, että on olemassa lowerbound on pienin määrä ja yläraja on suurin määrä vuonna alue satunnaislukugeneraattorille. Voimme käyttää seuraavaa mallia. kaava koodissamme.

(yläraja - alaraja + 1) * Rnd + alaraja

2.1 Satunnaislukugeneraattori - desimaaliluku

Tehtävä : Luo 10 satunnaislukua välillä 10 ja 20 osoitteessa solut A1:A10.

Koodi : Lisää seuraavat koodi vuonna visuaalinen perus editori ja paina F5 osoitteeseen ajaa se.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange satunnaisluku = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, satunnaisluku)>= 1 satunnaisluku = (upperbound - lowerbound + 1) * Rnd + lowerbound Silmukka Rng.Value =randomNumber Next End Sub 

Lähtö : Yllä oleva kuvakaappaus osoittaa 10 ainutlaatuista satunnaislukua vuonna välillä 1 ja 10.

2.2 Satunnaislukugeneraattori - kokonaisluku

Tässä kuvassa käytämme komentoa VBA Int-toiminto osoitteeseen poista ... murto-osa alkaen satunnaisluvut .

Tehtävä : Luo 20 satunnaista kokonaislukua välillä 1 ja 20 osoitteessa solut A1:B10.

Koodi : Lisää seuraavat koodi vuonna visuaalinen perus editori ja paina F5 osoitteeseen ajaa se.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange satunnaisluku = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, satunnaisluku)>= 1 satunnaisluku = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Loop.Rng.Value = randomNumber Next End Sub 

Lähtö : Yllä oleva kuvakaappaus osoittaa 20 ainutlaatuista satunnaista kokonaislukua vuonna välillä 1 ja 20.

Lue lisää: Satunnaislukugeneraattori Excelissä ilman toistoja (9 menetelmää)

Samanlaisia lukemia

  • Satunnaislukugeneraattori, jossa on tietojen analysointityökalu ja Excelin toiminnot
  • Miten luoda satunnaisia tietoja Excelissä (9 helppoa menetelmää)
  • Satunnainen 5-numeroinen numerogeneraattori Excelissä (7 esimerkkiä)
  • Satunnainen 4-numeroinen numerogeneraattori Excelissä (8 esimerkkiä)
  • Luo satunnaisluku Excelin luettelosta (4 tapaa)

3. Määritä desimaalipaikat ainutlaatuiselle satunnaislukugeneraattorille Excel VBA: ssa

Voimme käyttää Pyöreä toiminto koodissamme Määritä ... numero of desimaalit vuonna satunnaisesti generoidut yksilölliset numerot . syntaksi funktio on-

Round(expression, [numdecimalplaces])

Meidän on Määritä ... 2. väite kuten meidän vaatimus .

Tehtävä : Luo 20 satunnaislukua, joissa on 2 desimaalia välillä 1 ja 20 osoitteessa solut A1:B10.

Koodi : Lisää seuraavat koodi vuonna visuaalinen perus editori ja paina F5 osoitteeseen ajaa se.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange satunnaisluku = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, satunnaisluku)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub 

Lähtö : Yllä oleva kuvakaappaus osoittaa 20 ainutlaatuista satunnaista kokonaislukua, joissa on 2 desimaalia vuonna välillä 1 ja 20.

Lue lisää: Luo satunnaisluku Excelissä desimaalien kanssa (3 menetelmää)

4. Kehitä käyttäjälomake satunnaislukugeneraattorille, jossa ei ole päällekkäisyyksiä Excel VBA: ssa

Tässä kuvassa näytämme, miten käytetään komentokoodia UserForm osoitteessa Excel VBA osoitteeseen tuottaa satunnaislukuja kanssa ei kaksoiskappaleita .

Tehtävä: Luo 20 satunnaislukua solualueella A1:B10 käyttämällä UserForm kanssa syöttöarvot (i) lowerbound (ii) yläraja (iii) desimaalien määrä.

Luo UserForm:

Seuraa alla olevia ohjeita luodaksesi UserForm meidän halutut syöttökentät .

  • Mene osoitteeseen Kehittäjä välilehdeltä Excel-nauha .
  • Klikkaa ... Visual Basic -vaihtoehto.

  • Vuonna Visual Basic sovelluksia varten ikkunassa, napsauta Lisää pudotusvalikko osoitteeseen valitse ... UserForm vaihtoehto.

  • Vuonna UserForm add a etiketti .
  • Kuvateksti etiketti kuten LowerBound ominaisuuksissa.

  • Lisää kaksi lisää etiketit nimeltään Upperbund ja DecimalPlaces .

  • Lisää nyt kolme tekstilaatikkoa vuonna UserForm .

  • Tässä vaiheessa, lisää a CommandButton ja nimeä se Luo .

  • Nyt, kaksoisnapsauta ... CommandButton ja laita seuraava koodi vuonna koodieditori .
 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, satunnaisluku)>= 1 satunnaisluku = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = satunnaisluku Next End Sub 

  • Paina F5 osoitteeseen ajaa ... koodi ja UserForm on ilmestyi .
  • Laita lowerbound , upperbound, ja numero of desimaalit vuonna UserForm ja paina Luo painike .

Lähtö : In solut A1:B10 , on olemassa 20 satunnaislukua kanssa 2 desimaalia vuonna välillä 1-30.

Lue lisää: Kuinka luoda satunnaislukuja ilman päällekkäisyyksiä Excelissä (7 tapaa)

Muistettavat asiat

  • Voisimme myös käyttää Korjaa toiminto sen sijaan, että Int-toiminto osoitteeseen luoda yksilöllisiä kokonaislukuja Toiminto poistaa ... murto-osa a numero aivan kuten Int-toiminto .

Päätelmä

Nyt tiedämme, miten luoda ainutlaatuisia satunnaislukuja VBA:n avulla Excelissä sopivien esimerkkien avulla. Toivottavasti se auttaa sinua käyttämään toimintoja varmemmin. Jos sinulla on kysyttävää tai ehdotuksia, älä unohda laittaa niitä alla olevaan kommenttikenttään.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.