Generirajte slučajne brojeve pomoću funkcije VBA RND

Slučajni brojevi programa Excel VBA

Za generiranje slučajnih brojeva u vba imamo ugrađenu funkciju koja se naziva RND . Potreban je samo argument broj da bi se generirali slučajni brojevi, a to je također neobavezni parametar. Stvorit će slučajne brojeve koji su veći od 0 i manji od 1.

Ovo djeluje potpuno isto kao i excel funkcija "RAND". Kao što sam rekao u funkciji radnog lista "RAND" i u VBA, možemo generirati slučajne brojeve koji su veći od 0, ali manji od 1.

Sada pogledajte sintaksu funkcije "RND".

(Broj): Argument možemo proslijediti na tri načina.

  • Ako broj dodamo kao <0, on svaki put generira isti slučajni broj.
  • Ako broj dodamo kao 0, ponovit će najnoviji broj koji je dao.
  • Ako proslijedimo broj> 0, on vam stalno daje različite slučajne brojeve, tj. Sljedeći slučajni broj u nizu.

Kako generirati slučajne brojeve pomoću VBA koda?

Primjer # 1

Sada ćemo vidjeti jednostavan primjer korištenja funkcije "RND". Slijedite korake u nastavku za samostalno pisanje VBA koda.

Korak 1: Proglasite varijablu kao "Integer" u VBA.

Kodirati:

Sub Rnd_Example1 () Dim K kao Integer End Sub

Korak 2: Sada dodijelite vrijednost varijabli "k" putem funkcije " RND ".

Kodirati:

Sub Rnd_Primjer1 () Dim K Kao cijeli broj K = Rnd () Kraj Sub

Korak 3: Prikažite vrijednost koju vraća varijabla "k" u okviru za poruku .

Kodirati:

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

Sada pokrenite excel makronaredbu i pogledajte kakav je rezultat.

Pogledajte što se dogodilo.

Prikazuje rezultat kao 1 gdje funkcija "RND" može vratiti samo brojeve koji su veći od nule, ali manji od 1.

Sigurno razmišljate o tome što je ovdje pogrešno.

Pogrešna stvar je vrsta podataka koju smo dodijelili varijabli "k".

Ako se osvrnete na varijablu koju smo deklarirali, tip podataka dodijelili smo Integer. Budući da smo varijablu dodijelili Integer, ona može prikazati samo cijele brojeve između -32768 i 32767.

Kad god RND vrati decimalni broj, VBA pretvara decimalni broj u najbliži cijeli broj, tj. 1.

Dakle, da bi formula radila ispravno, proglasite varijablu kao " Double ".

"Double" je vrsta podataka u VBA koja može sadržavati decimalne vrijednosti.

Kodirati:

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

Sada kod i pogledajte kakav je rezultat.

Kliknite na ok i pokrenite još jednom i pogledajte kakav je rezultat.

Ovaj put smo dobili drugačiji rezultat. Budući da je "RND" u svojoj prirodi hlapljiva funkcija, on reproducira različite rezultate svaki put kad izvršite kôd.

Primjer # 2 - Dobijte svaki slučajni broj svaki put

Kao što smo vidjeli u prethodnom primjeru e, funkcija "RND" reproducira rezultat svaki put kada izvršimo kod. Da bismo iznova i iznova dobili isti slučajni broj, moramo argument predati kao nulu.

Kodirati:

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

To će stvoriti isti broj uvijek iznova kad izvršimo kod.

Primjer # 3 - Generiraj cijeli slučajni broj

Također možemo generirati cijele brojeve korištenjem drugih VBA funkcija ili drugih ulaznih brojeva. Na primjer, pogledajte donji kod.

Kodirati:

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

Ovaj će kôd generirati slučajne cijele brojeve s decimalnim zarezima svaki put kad izvršimo kôd.

Ako gledate cijele brojeve bez decimalnih zareza, tada možemo koristiti donji kod.

Kodirati:

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

To će nastaviti generirati cijele brojeve od 1 do 100.

Zanimljivi članci...