Bumuo ng Mga Random na Numero gamit ang VBA RND Function

Mga Random na Numero ng Excel VBA

Sa bumuo ng mga random na numero sa vba mayroon kaming isang built-in na function na tinatawag RND. Kakailanganin lamang ng isang argument ang isang numero upang makabuo ng mga random na numero at ito rin ay isang opsyonal na parameter. Lilikha ito ng mga random na numero na mas malaki sa 0 at mas maliit sa 1.

Gumagawa ito ng eksaktong kapareho ng pagpapaandar ng excel na "RAND". Tulad ng sinabi ko sa pag-andar ng worksheet na "RAND", sa VBA din makakagawa kami ng mga random na numero na mas malaki sa 0 ngunit mas mababa sa 1.

Tumingin ngayon sa syntax ng pagpapaandar na "RND".

[Bilang]: Maaari nating ipasa ang argument sa tatlong paraan.

  • Kung ipinapasa namin ang numero bilang <0, patuloy itong bumubuo ng parehong random na numero sa bawat oras.
  • Kung ipasa natin ang bilang bilang 0, mauulit nito ang pinakabagong bilang na ibinigay nito.
  • Kung ipinapasa namin ang numero> 0, patuloy itong nagbibigay sa iyo ng iba't ibang mga random na numero hal. Ang susunod na random na numero sa pagkakasunud-sunod.

Paano Bumuo ng Mga Random na Numero gamit ang VBA Code?

Maaari mong i-download ang template na VBA Random Numbers Excel na ito - VBA Random Number Excel Template

Halimbawa # 1

Ngayon makikita natin ang simpleng halimbawa ng paggamit ng "RND" na pagpapaandar. Sundin ang mga hakbang sa ibaba upang isulat ang VBA code sa iyong sarili.

Hakbang 1: Ipahayag ang variable bilang "Integer" sa VBA

Code:

 Sub Rnd_Example1 () Dim K Bilang Integer End Sub 

Hakbang 2: Italaga ngayon ang halaga sa variable na "k" sa pamamagitan ng "RND”Pagpapaandar.

Code:

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

Hakbang 3: Ipakita ang halagang ibinalik ng variable na “k” sa kahon ng mensahe.

Code:

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

Patakbuhin ngayon ang excel macro at tingnan kung ano ang resulta.

Tingnan mo kung anong nangyari.

Ipinapakita nito ang resulta bilang 1 kung saan ang function na "RND" ay maaaring bumalik ng mga numero lamang na mas malaki sa zero ngunit mas mababa sa 1.

Dapat iniisip mo kung ano ang maling bagay dito.

Ang maling bagay dito ay ang uri ng uri ng data na naitalaga namin sa variable na "k".

Kung titingnan mo ang variable na idineklara namin na itinalaga namin ang uri ng data bilang Integer. Dahil itinalaga namin ang variable bilang Integer, maipapakita lamang nito ang buong numero sa pagitan ng -32768 hanggang 32767.

Kailan man ibabalik ng RND ang decimal number na VBA na-convert ang decimal number sa pinakamalapit na integer ibig sabihin 1.

Kaya, upang gumana nang maayos ang formula ay idineklara ang variable bilang "Doble”.

Ang "Double" ay ang uri ng data sa VBA na maaaring humawak ng mga decimal na halaga.

Code:

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

Ngayon ang code at tingnan kung ano ang resulta.

Mag-click sa ok at magpatakbo ng isa pang oras at makita kung ano ang resulta.

Sa pagkakataong ito ay nakakuha kami ng ibang resulta. Dahil ang "RND" ay isang pabagu-bago ng pag-andar sa likas na katangian na ito ay gumagawa ng iba't ibang mga resulta sa tuwing naisasagawa ang code.

Halimbawa # 2 - Kumuha ng Parehong Random na Numero Sa tuwing Oras

Tulad ng nakita natin sa naunang halimbawa ng "RND" na pagpapaandar na ginagampanan ang resulta sa tuwing naisasagawa namin ang code. Upang makuha ang parehong random na numero, nang paulit-ulit, kailangan nating ipasa ang argumento bilang zero.

Code:

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

Lilikha ito ng parehong numero nang paulit-ulit kapag naipatupad namin ang code.

Halimbawa # 3 - Bumuo ng Buong Random na Numero

Maaari rin kaming makabuo ng buong mga numero sa pamamagitan ng paggamit ng iba pang pag-andar ng VBA o iba pang mga input number. Para sa isang halimbawa tingnan ang code sa ibaba.

Code:

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

Ang code na ito ay bubuo ng mga random na buong numero na may mga decimal point sa tuwing naisasakatuparan namin ang code.

Kung tinitingnan mo ang buong mga numero nang walang mga decimal point kung gayon maaari naming gamitin ang code sa ibaba.

Code:

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

Patuloy nitong bubuo ang buong numero mula 1 hanggang 100.