Tartalomjegyzék
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.xlsm4 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.