Generujte náhodné čísla pomocou funkcie VBA RND

Náhodné čísla v programe Excel VBA

Na generovanie náhodných čísel vo vba máme zabudovanú funkciu s názvom RND . Na vygenerovanie náhodných čísel stačí argument číslo a je to tiež voliteľný parameter. Vytvorí náhodné čísla, ktoré sú väčšie ako 0 a menšie ako 1.

To funguje úplne rovnako ako funkcia programu Excel „RAND“. Ako som povedal vo funkcii listu „RAND“ aj vo VBA, môžeme generovať náhodné čísla, ktoré sú väčšie ako 0, ale menšie ako 1.

Teraz sa pozrite na syntax funkcie „RND“.

(Číslo): Argument môžeme odovzdať tromi spôsobmi.

  • Ak zadáme číslo ako <0, vygeneruje zakaždým rovnaké náhodné číslo.
  • Ak zadáme číslo ako 0, zopakuje sa posledné zadané číslo.
  • Ak zadáme číslo> 0, dáva vám stále rôzne náhodné čísla, tj ďalšie náhodné číslo v poradí.

Ako generovať náhodné čísla pomocou kódu VBA?

Príklad č

Teraz uvidíme jednoduchý príklad použitia funkcie „RND“. Podľa nasledujúcich pokynov môžete svojpomocne napísať kód VBA.

Krok 1: Vo VBA deklarujte premennú ako „Celé číslo“.

Kód:

Sub Rnd_Example1 () Dim K ako celé číslo End Sub

Krok 2: Teraz pomocou funkcie „ RND “ priraďte hodnotu premennej „k“ .

Kód:

Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub

Krok 3: V poli so správou zobrazte hodnotu vrátenú premennou „k“ .

Kód:

Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub

Teraz spustite makro programu Excel a uvidíte, aký je výsledok.

Pozri, čo sa stalo.

Zobrazuje výsledok ako 1, kde funkcia „RND“ môže vrátiť iba čísla, ktoré sú väčšie ako nula, ale menšie ako 1.

Určite premýšľate nad tým, čo je tu nesprávna vec.

Zlou vecou je druh dátového typu, ktorý sme priradili premennej „k“.

Ak sa pozriete späť na premennú, ktorú sme deklarovali, priradili sme dátový typ ako Integer. Pretože sme premennú priradili ako Integer, môže zobrazovať iba celé čísla medzi -32768 až 32767.

Kedykoľvek RND vráti desatinné číslo, VBA prevedie desatinné číslo na najbližšie celé číslo, tj. 1.

Ak chcete, aby vzorec fungoval správne, deklarujte premennú ako „ dvojitú “.

„Double“ je dátový typ vo VBA, ktorý môže obsahovať desatinné hodnoty.

Kód:

Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub

Teraz kód a uvidíte, aký je výsledok.

Kliknite na ok a spustite ešte raz a uvidíte, aký je výsledok.

Tentokrát sme dostali iný výsledok. Pretože „RND“ je svojou povahou nestála funkcia, pri každom spustení kódu reprodukuje rôzne výsledky.

Príklad č. 2 - Získajte vždy rovnaké náhodné číslo

Ako sme videli v predchádzajúcom príklade e, funkcia „RND“ reprodukuje výsledok zakaždým, keď vykonáme kód. Aby sme dostali to isté náhodné číslo, musíme znova a znova odovzdať argument ako nulu.

Kód:

Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub

Toto vytvorí rovnaké číslo, keď spustíme kód.

Príklad č. 3 - Generovanie celého náhodného čísla

Celé čísla môžeme vygenerovať aj pomocou iných funkcií VBA alebo iných vstupných čísel. Napríklad si pozrite nasledujúci kód.

Kód:

Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub

Tento kód vygeneruje náhodné celé čísla s desatinnými miestami zakaždým, keď vykonáme kód.

Ak sa pozeráte na celé čísla bez desatinných miest, môžeme použiť nasledujúci kód.

Kód:

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

Takto sa budú naďalej generovať celé čísla od 1 do 100.

Zaujímavé články...