Excel VBA: Генератор на случайни числа без дубликати (4 примера)

  • Споделя Това
Hugh West

Тази статия илюстрира 4 примера за генератор на случайни числа без дублирания с помощта на VBA в Excel. Тук ще използваме вградената функция Rnd на Excel, за да конфигурираме нашия код. Нека се потопим в примерите, за да научим техниките за генериране на уникални случайни числа.

Изтегляне на работна тетрадка за практика

Изтеглете тази учебна тетрадка, за да се упражнявате, докато четете тази статия.

Генератор на случайни числа без дубликати.xlsm

4 примера за генератор на случайни числа без дубликати в Excel VBA

Напишете код в редактора на Visual Basic

За генериране на случайни числа без дубликати , трябва да отворен и писане на код VBA в редактор на Visual Basic. Следвайте стъпки към отворен на визуален основен редактор и да напишете малко код там.

  • Отидете в Разработчик от раздела Лентата на Excel .
  • Кликнете върху на Опция за Visual Basic.

  • В Visual Basic за приложения щракнете върху прозореца Вмъкване на падащо меню към изберете на Нов модул опция.

Сега поставете своя код вътре в визуален редактор на код и натиснете F5 към стартирайте това.

1. Използване на функцията Rnd във VBA за генериране на случаен номер без дубликати

Сайтът Функция Rnd се използва в Excel VBA към генериране на случайни числа които са между 0 и 1 ексклузивно.

Задача : Генериране на 10 случайни числа между 0 и 1 в клетки A1:A10.

Код : Вмъкване на следното код в визуален основен редактор и натиснете F5 към стартирайте това.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

Изход : Горната снимка на екрана показва 10 уникални случайни числа в диапазон от 0 до 1.

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

В този код използваме Функция Rnd към вмъкване на случайни числа в клетъчен диапазон A1: A10 . преди вмъкване на a нов номер , използвахме Цикъл Do While към погледнете за номер в предварително определен диапазон от клетки (A1:A10) дали е вече съществува или не . За да проверите съществуване на номер в диапазон на клетките всеки път конфигурирахме кода с Функция COUNTIF , Тази функция проверки a ново случайно число в списък на вече съществуващи числа, преди да ги вмъкнете.

Прочетете още: Формула на Excel за генериране на случаен номер (5 примера)

2. Генератор на случайни числа за дефинирани долна и горна граница без дубликати

За генериране на случайни числа в рамките на определен обхват , трябва да зададем долна граница и горна граница в нашия код VBA. За информация долна граница е най-малък брой и горна граница е най-голям брой в обхват за генератора на случайни числа. Можем да използваме следното формула в нашия код.

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 Генератор на случайни числа - десетичен

Задача : Генериране на 10 случайни числа между 10 и 20 в клетки A1:A10.

Код : Вмъкване на следното код в визуален основен редактор и натиснете F5 към стартирайте това.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =randomNumber Следваща Край на Sub 

Изход : Горната екранна снимка показва 10 уникални случайни числа в в диапазона от 1 до 10.

2.2 Генератор на случайни числа - цяло число

В тази илюстрация ще използваме Функция VBA Int към премахване на на дробна част от случайни числа .

Задача : Генериране на 20 случайни цели числа между 1 и 20 в клетки A1:B10.

Код : Вмъкване на следното код в визуален основен редактор и натиснете F5 към стартирайте това.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Следваща End Sub 

Изход : Горната екранна снимка показва 20 уникални случайни цели числа в в диапазона от 1 до 20.

Прочетете още: Генератор на случайни числа в Excel без повторения (9 метода)

Подобни четива

  • Генератор на случайни числа с инструмент за анализ на данни и функции в Excel
  • Как да генерираме случайни данни в Excel (9 лесни метода)
  • Генератор на случайни 5-цифрени числа в Excel (7 примера)
  • Генератор на случайни 4-цифрени числа в Excel (8 примера)
  • Генериране на случаен номер от списък в Excel (4 начина)

3. Определяне на местата след десетичната запетая за уникален генератор на случайни числа в Excel VBA

Можем да използваме Кръгла функция в нашия код на посочете на номер на десетични знаци в произволно генерирани уникални номера . синтаксис на функцията е-

Round(израз, [numdecimalplaces])

Трябва да посочете на 2-ри аргумент според нашите изискване .

Задача : Генериране на 20 случайни числа с 2 знака след десетичната запетая между 1 и 20 в клетки A1:B10.

Код : Вмъкване на следното код в визуален основен редактор и натиснете F5 към стартирайте това.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Цикъл Rng.Value = randomNumber Следваща End Sub 

Изход : Горната екранна снимка показва 20 уникални случайни цели числа с 2 знака след десетичната запетая в в диапазона от 1 до 20.

Прочетете още: Генериране на случаен номер в Excel с десетични дроби (3 метода)

4. Разработване на потребителска форма за генератор на случайни числа без дубликати в Excel VBA

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

Задача: Генериране на 20 случайни числа в обхвата на клетките A1:B10 с помощта на Потребителски формуляр с входни стойности (i) долна граница (ii) горна граница (iii) броя на десетичните знаци.

Създаване на UserForm:

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

  • Отидете в Разработчик от раздела Лентата на Excel .
  • Кликнете върху на Опция за Visual Basic.

  • В Visual Basic за приложения щракнете върху прозореца Вмъкване на падащо меню към изберете на Потребителски формуляр опция.

  • В Добавяне на UserForm a етикет .
  • Заглавие етикет като LowerBound в свойствата.

  • Добавяне на две повече етикети с име Upperbund и DecimalPlaces .

  • Сега добавете три текстови прозореца в Потребителски формуляр .

  • На този етап, добавете a CommandButton и го наречете Генериране на .

  • Сега, двойно кликване на CommandButton и въведете следното код в редактор на код .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Натиснете F5 към стартирайте на код и Потребителски формуляр има се появи .
  • Поставете долна граница , горна граница, и номер на десетични знаци в Потребителски формуляр и натиснете Генериране на бутон .

Изход : В клетки A1:B10 , има 20 случайни числа с 2 знака след десетичната запетая в от 1 до 30.

Прочетете още: Как да генерирате случайни числа без дубликати в Excel (7 начина)

Нещата, които трябва да запомните

  • Можем да използваме и Фиксиране на функцията вместо Функция Int към генериране на уникални целочислени числа . Функцията премахва на дробна част на номер точно като Функция Int .

Заключение

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

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.