Sisällysluettelo
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.xlsmsm4 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.