Excel VBA: véletlenszám-generátor duplikátum nélkül (4 példa)

  • Ossza Meg Ezt
Hugh West

Ez a cikk 4 példát mutat be a következőkre véletlenszám-generátor duplikációk nélkül az Excel VBA segítségével. Itt az Excel beépített Rnd függvényét fogjuk használni a kódunk konfigurálásához. Merüljünk el a példákban, hogy megismerjük az egyedi véletlenszámok generálásának technikáit.

Gyakorlati munkafüzet letöltése

Töltse le ezt a gyakorlati munkafüzetet, hogy gyakorolhasson, miközben ezt a cikket olvassa.

Duplikátum nélküli véletlenszám-generátor.xlsm

4 példa véletlenszám-generátorra duplikátum nélkül az Excel VBA-ban

Kód írása Visual Basic szerkesztővel

A címre. véletlen számok generálása duplikátum nélkül , szükségünk van arra, hogy nyitott és VBA kódot írni a Visual Basic szerkesztő. Kövesse a lépések a címre. nyitott a Visual Basic szerkesztő és írjon oda kódot.

  • Menjen a Fejlesztő lapot a Excel szalag .
  • Kattintson a címre. a Visual Basic opció.

  • A Visual Basic For Applications ablakban kattintson a Beillesztés legördülő menüpont a címre. válassza ki a címet. a Új modul opció.

Most tedd a kód a vizuális kódszerkesztő és nyomja meg az F5-öt a címre. fuss azt.

1. A VBA Rnd funkció használata véletlenszám generálásához duplikátum nélkül

A Rnd funkció a következőkben használják Excel VBA a címre. véletlen számok generálása amelyek 0 és 1 exkluzív.

Feladat : 10 véletlen szám generálása a között. 0 és 1 a oldalon. A1:A10 cellák.

Kód: : Beillesztés a következőket kód a Visual Basic szerkesztő és nyomja meg a F5 a címre. fuss azt.

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

Kimenet : A fenti képernyőképen látható 10 egyedi véletlen szám a 0 és 1 közötti tartományban.

Kódmagyarázat:

Ebben a kódban a Rnd funkció a címre. véletlenszerű számok beillesztése a A1:A10 cellatartomány . beillesztése a új szám , használtunk egy Do While ciklus a címre. look a szám a előre meghatározott cellatartomány (A1:A10) hogy már létezik vagy nem A létezés a szám a cellatartomány minden egyes alkalommal a kódot a COUNTIF funkció , Ez a funkció ellenőrzések a új véletlen szám a lista a már meglévő számokat a beszúrás előtt.

Bővebben: Excel képlet a véletlen szám generálásához (5 példa)

2. Véletlenszám-generátor meghatározott alsó és felső határokhoz duplikátum nélkül

A címre. véletlen számok generálása egy meghatározott tartomány , be kell állítanunk a lowerbound és upperbound a VBA kódunkban. Tájékoztatásképpen a lowerbound a legalacsonyabb szám és a upperbound a legmagasabb szám a tartomány a véletlenszám-generátorhoz. Használhatjuk a következőt formula a kódunkban.

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 Véletlenszám-generátor - decimális számok

Feladat : 10 véletlen szám generálása a között. 10 és 20 a oldalon. A1:A10 cellák.

Kód: : Beillesztés a következőket kód a Visual Basic szerkesztő és nyomja meg a F5 a címre. fuss azt.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRrange 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 

Kimenet : A fenti képernyőképen látható 10 egyedi véletlen szám a 1 és 10 közötti tartományban.

2.2 Véletlenszám-generátor - egész számok

Ebben az illusztrációban a VBA Int funkció a címre. távolítsa el a a törtrész a véletlenszerű számok .

Feladat : 20 véletlen egész szám generálása a között. 1 és 20 a oldalon. A1:B10 cellák.

Kód: : Beillesztés a következőket kód a Visual Basic szerkesztő és nyomja meg a F5 a címre. fuss azt.

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

Kimenet : A fenti képernyőképen látható 20 egyedi véletlenszerű egész szám a 1 és 20 közötti tartományban.

Bővebben: Véletlenszám-generátor Excelben ismétlések nélkül (9 módszer)

Hasonló olvasmányok

  • Véletlenszám-generátor adatelemző eszközzel és funkciókkal az Excelben
  • Hogyan generáljunk véletlenszerű adatokat Excelben (9 egyszerű módszer)
  • Véletlenszerű 5 számjegyű számgenerátor Excelben (7 példa)
  • Véletlenszerű 4 számjegyű számgenerátor Excelben (8 példa)
  • Véletlenszám generálása Excel listából (4 mód)

3. Tizedesjegyek megadása az egyedi véletlenszám-generátorhoz az Excel VBA-ban

Használhatjuk a Kerek funkció a kódunkban a adja meg a címet a szám a tizedesjegyek a véletlenszerűen generált egyedi számok . szintaxis a függvény-

Round(expression, [numdecimalplaces])

Szükségünk van adja meg a címet a 2. érv a mi követelmény .

Feladat : 20 véletlen szám generálása 2 tizedesjegy pontossággal a között. 1 és 20 a oldalon. A1:B10 cellák.

Kód: : Beillesztés a következőket kód a Visual Basic szerkesztő és nyomja meg a F5 a címre. fuss azt.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRrange 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 Next End Sub 

Kimenet : A fenti képernyőképen látható 20 egyedi véletlenszerű egész szám 2 tizedesjegyekkel a 1 és 20 közötti tartományban.

Bővebben: Véletlen szám generálása Excelben tizedesjegyekkel (3 módszer)

4. Fejlesszen ki egy felhasználói űrlapot a véletlenszám-generátorhoz, amely nem tartalmaz duplikátumokat az Excel VBA-ban

Ezen az ábrán megmutatjuk, hogyan használhatunk egy UserForm a oldalon. Excel VBA a címre. véletlen számok generálása a címen nincsenek duplikátumok .

Feladat: 20 véletlen szám generálása cellatartományban A1:B10 egy UserForm a bemeneti értékek (i) lowerbound (ii) upperbound (iii) a tizedesjegyek száma.

Hozzon létre egy UserForm-ot:

Kövesse az alábbi lépéseket egy UserForm a mi kívánt beviteli mezők .

  • Menjen a Fejlesztő lapot a Excel szalag .
  • Kattintson a címre. a Visual Basic opció.

  • A Visual Basic For Applications ablakban kattintson a Beillesztés legördülő menüpont a címre. válassza ki a címet. a UserForm opció.

  • A UserForm hozzáadása a címke .
  • Felirat a címke mint LowerBound a tulajdonságok között.

  • Add két további címkék a nevet viseli. Upperbund és DecimalPlaces .

  • Most adjuk hozzá három TextBox a UserForm .

  • Ebben a szakaszban, add a CommandButton és nevezd el Generálja .

  • Most, dupla kattintás a CommandButton és a következőket írja be kód a kódszerkesztő .
 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 cellRrange 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 

  • Sajtó F5 a címre. fuss a kód és a UserForm van megjelent .
  • Tegye a lowerbound , upperbound, és a szám a tizedesjegyek a UserForm és nyomja meg a Gomb generálása .

Kimenet : In A1:B10 cellák , vannak 20 véletlen szám a címen 2 tizedesjegy a 1 és 30 közötti tartományban.

Bővebben: Hogyan generáljunk véletlen számokat duplikátumok nélkül az Excelben (7 mód)

Emlékezetes dolgok

  • Használhatjuk a Fix funkció a Int funkció a címre. egyedi egész számok generálása A funkció eltávolítja a a törtrész egy szám akárcsak a Int funkció .

Következtetés

Most már tudjuk, hogyan lehet egyedi véletlen számokat generálni a VBA segítségével az Excelben a megfelelő példák segítségével. Remélhetőleg ez segít abban, hogy magabiztosabban használhassa a funkciót. Bármilyen kérdés vagy javaslat ne felejtse el, hogy az alábbi megjegyzés rovatba tegye őket.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.