Véletlen számok generálása a VBA RND függvény használatával

Excel VBA véletlenszerű számok

Ahhoz, hogy generál véletlen számokat VBA van egy beépített funkció nevű RND . A véletlenszámok előállításához csak egy argumentumra van szükség egy számra, és ez szintén opcionális paraméter. 0-nál nagyobb és 1-nél kisebb véletlenszerű számokat hoz létre.

Ez pontosan ugyanúgy működik, mint az „RAND” excel funkció. Amint azt a VBA „RAND” munkalapfüggvényében elmondtam, véletlenszerű számokat is létrehozhatunk, amelyek nagyobbak, mint 0, de kisebbek, mint 1.

Most nézze meg az „RND” függvény szintaxisát.

(Szám): Három módon adhatjuk át az érvet.

  • Ha a számot <0-ként adjuk meg, akkor minden alkalommal ugyanazt a véletlenszámot generálja.
  • Ha a számot 0-ként adjuk meg, akkor megismétli a legutóbb megadott számot.
  • Ha átadjuk a> 0 számot, akkor folyton különböző véletlenszerű számokat ad, azaz a következő véletlen számot a sorozatban.

Hogyan lehet véletlen számokat előállítani a VBA kód használatával?

1. példa

Most látni fogjuk az „RND” függvény használatának egyszerű példáját. Kövesse az alábbi lépéseket a VBA kód önálló megírásához.

1. lépés: Nyújtsa be a változót „Integer” -ként a VBA-ban.

Kód:

Rnd_Példa1 () Dim K egész szám végként Sub

2. lépés: Most az „ RND ” függvényen keresztül rendelje hozzá az értéket a „k” változóhoz .

Kód:

Sub Rnd_Példa1 () Dim K As egész szám = Rnd () End Sub

3. lépés: Mutassa meg az üzenet mezőben a „k” változó által visszaadott értéket .

Kód:

Rnd_Példa1 () Dim K mint egész K = Rnd () MsgBox K Vége Sub

Most futtassa az excel makrót, és nézze meg, mi az eredmény.

Nézd, mi történt.

Az eredményt 1-ként mutatja, ahol az „RND” függvény csak nullánál nagyobb, de 1-nél kisebb számokat adhat vissza.

Biztos azon gondolkodik, hogy mi a baj itt.

Rossz dolog itt az a típusú adattípus, amelyet a „k” változóhoz rendeltünk.

Ha visszatekint az általunk deklarált változóra, az adattípust egész számnak rendeltük el. Mivel a változót egész számnak rendeltük, csak a -32768 és 32767 közötti egész számokat tudja megjeleníteni.

Amikor az RND visszaadja a tizedes számot, a VBA a tizedes számot a legközelebbi egész számra, azaz 1-re konvertálja.

Tehát a képlet megfelelő működéséhez deklaráljuk a változót „ Double ” -nek .

A „Double” a VBA adattípusa, amely tizedes értékeket képes tárolni.

Kód:

Sub Rnd_Példa1 () Dim K As Double K = Rnd () MsgBox K End Sub

Most a kódot, és nézze meg, mi az eredmény.

Kattintson az ok gombra, és futtasson még egyszer, és nézze meg, mi az eredmény.

Ezúttal más eredményt kaptunk. Mivel az „RND” volatilis funkció a természetben, a kód minden végrehajtásakor különböző eredményeket jelenít meg.

2. példa - Minden alkalommal ugyanazt a véletlenszerű számot kapja meg

Amint az előző e példában láthattuk, az „RND” függvény a kód minden végrehajtásakor reprodukálja az eredményt. Annak érdekében, hogy ugyanazt a véletlen számot kapjuk, újra és újra meg kell adnunk az argumentumot nullának.

Kód:

Sub Rnd_Példa2 () Dim K As Double K = Rnd (0) MsgBox K End Sub

Ez újra és újra elő fogja állítani ugyanazt a számot, amikor végrehajtjuk a kódot.

3. példa - Egész véletlenszerű szám generálása

Egész számokat is előállíthatunk más VBA függvények vagy más bemeneti számok használatával. Nézze meg például az alábbi kódot.

Kód:

Sub Rnd_Példa3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub

Ez a kód véletlenszerű egész számokat generál tizedes pontokkal, minden alkalommal, amikor végrehajtjuk a kódot.

Ha az egész számokat tizedespontok nélkül nézi, akkor az alábbi kódot használhatjuk.

Kód:

Rnd_Példa3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub

Ez folyamatosan generálja az egész számokat 1-től 100-ig.

érdekes cikkek...