Генерирайте произволни числа, като използвате функцията VBA RND

Случайни числа в Excel VBA

За да генерираме случайни числа в vba , имаме вградена функция, наречена RND . Той просто взема аргумент число, за да генерира произволни числа и това също е незадължителен параметър. Той ще създаде произволни числа, които са по-големи от 0 и по-малки от 1.

Това работи по същия начин като функцията на Excel „RAND“. Както казах във функцията на работния лист „RAND“ и във VBA, можем да генерираме случайни числа, които са по-големи от 0, но по-малки от 1.

Сега разгледайте синтаксиса на функцията „RND“.

(Число): Можем да предадем аргумента по три начина.

  • Ако предадем числото като <0, той продължава да генерира едно и също произволно число всеки път.
  • Ако предадем числото като 0, то ще повтори най-новото число, което е дал.
  • Ако предадем числото> 0, той продължава да ви дава различни случайни числа, т.е. следващото произволно число в последователността.

Как да генерирам произволни числа, използвайки VBA код?

Пример # 1

Сега ще видим простия пример за използване на функцията “RND”. Следвайте стъпките по-долу, за да напишете сами кода на VBA.

Стъпка 1: Декларирайте променливата като “Integer” във VBA.

Код:

Sub Rnd_Example1 () Dim K As Integer End Sub

Стъпка 2: Сега присвоете стойността на променливата „k“ чрез функцията „ RND “.

Код:

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

Стъпка 3: Покажете стойността, върната от променливата „k“ в полето за съобщения .

Код:

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

Сега стартирайте макроса на Excel и вижте какъв е резултатът.

Вижте какво се е случило.

Той показва резултата като 1, където функцията „RND“ може да върне само числа, които са по-големи от нула, но по-малко от 1.

Сигурно си мислите какво е грешното тук.

Грешното тук е видът тип данни, който сме присвоили на променливата „k.“

Ако погледнете назад към декларираната от нас променлива, ние сме присвоили типа на данните като Integer. Тъй като сме задали променливата като Integer, тя може да показва само всички числа между -32768 до 32767.

Всеки път, когато RND връща десетичното число, VBA преобразува десетичното число до най-близкото цяло число, т.е. 1.

Така че, за да накарате формулата да работи правилно, декларирайте променливата като „ Double “.

“Double” е типът данни в VBA, който може да съдържа десетични стойности.

Код:

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

Сега кодът и вижте какъв е резултатът.

Кликнете върху ok и стартирайте още веднъж и вижте какъв е резултатът.

Този път получихме различен резултат. Тъй като “RND” е нестабилна функция в природата, тя възпроизвежда различни резултати всеки път, когато изпълнявате кода.

Пример # 2 - Получавайте едно и също произволно число всеки път

Както видяхме в предишния пример e, функцията “RND” възпроизвежда резултата всеки път, когато изпълняваме кода. За да получим същото случайно число, отново и отново, трябва да предадем аргумента като нула.

Код:

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

Това ще генерира едно и също число отново и отново, когато изпълним кода.

Пример # 3 - Генерирайте цяло произволно число

Също така можем да генерираме цели числа, като използваме други функции на VBA или други входни числа. Например погледнете кода по-долу.

Код:

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

Този код ще генерира произволни цели числа с десетични точки всеки път, когато изпълним кода.

Ако разглеждате целите числа без десетични точки, тогава можем да използваме кода по-долу.

Код:

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

Това ще продължи да генерира цели числа от 1 до 100.

Интересни статии...