Генерирайте списък с уникални случайни числа, използвайки VBA в Microsoft Excel

Съдържание

В тази статия ще създадем персонализирана функция за генериране на списък с уникални и случайни числа между посочените диапазони.

В този пример можем да стартираме макроса, като кликнете върху бутона „Изпращане“. Преди да стартираме макроса, трябва да въведем стойности за четири параметъра. Имаме предоставяне на долната граница на стойността в клетка C12, горната граница в клетка C13, необходим брой уникални случайни числа в клетка C14 и адресът на местоназначението, в който е необходим изход в клетка C15.

Логично обяснение

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

Създадохме макрос „TestUniqueRandomNumbers“, за да извикаме персонализираната функция „UniqueRandomNumbers“. Този макрос се изпълнява чрез натискане на бутона „Изпращане“. Този макрос приема стойността на въвеждане от потребителя от диапазона C12 до C15.

Обяснение на кода

i = CLng (Rnd () * (ULimit - LLimit) + LLimit)

Горната формула се използва за създаване на произволно число между определената горна и долна граница. Функцията Rnd () създава произволно число между 0 и 1.

Диапазон (Избор, Избор. Сместване (Брояч - 1, 0)). Стойност = _

Application.Transpose (RandomNumberList)

Горният код се използва за транспониране на изхода на масива и присвояване на изхода към посочената дестинация.

Моля, следвайте кода по -долу

 Опция Изрична функция UniqueRandomNumbers (NumCount As Long, LLimit As Long, ULimit As Long) As Variant 'Деклариране на променливи Dim RandColl As Collection Dim i As Long Dim varTemp () As Long' Проверка за стойността, посочена от потребителя Ако NumCount ULimit Тогава UniqueRandomNumbers = "Указаната долна граница е по -голяма от определената горна граница" Излезте от функцията Край Ако Ако NumCount> (ULimit - LLimit + 1) Тогава UniqueRandomNumbers = "Броят на изискваното уникално случайно число е по -голямо от максималния брой уникален номер, който може да съществува между долната граница ограничение и горна граница "Изход Функция Край, ако" Създаване на нов обект на събиране Задайте RandColl = Нова колекция Рандомизирай Do On Error Resume Next "Изчисляване на случайното число, което съществува между долната и горната граница i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Вмъкване на уникалното произволно число в колекцията RandColl.Add i, CStr (i) On Error GoTo 0' Looping, докато колекцията има елементи, равни на numCount Loop До RandColl.Count = Num Count ReDim varTemp (1 To NumCount) 'Присвояване на стойността на елементите от колекцията към масив varTemp За i = 1 Към NumCount varTemp (i) = RandColl (i) Следващ i UniqueRandomNumbers = varTemp Set RandColl = Нищо Изтриване varTemp Крайна функция Под TestUniqueRamp () 'Обявете променливите Dim RandomNumberList като вариант Dim Counter As Long, LowerLimit As Long, UpperLimit As Long Dim Address As String' Получаване на стойностите, въведени от потребителя Counter = Range ("C14"). Value LowerLimit = Range ("C12" ) .Value UpperLimit = Range ("C13"). Value Address = Range ("C15"). Value 'Извикване на персонализирана функция UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Избор на целевия диапазон (адрес). Изберете 'Присвояване стойността в целевия диапазон (Избор, Избор. Офсет (Брояч - 1, 0)). Стойност = _ Приложение. Транспониране (RandomNumberList) Краен под 

Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave