Excel VBA: генератор випадкових чисел без повторень (4 приклади)

  • Поділитися Цим
Hugh West

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

Завантажити Практичний посібник

Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.

Генератор випадкових чисел без дублікатів.xlsm

4 Приклади генератора випадкових чисел без повторень в Excel VBA

Написання коду в редакторі Visual Basic

До генерувати випадкові числа без дублікатів нам потрібно відкритий і написання VBA коду в візуальний базовий редактор. Слідкуйте за кроки до відкритий в "Урядовому кур'єрі". візуальний базовий редактор і написати там якийсь код.

  • Перейдіть на сторінку Розробник на вкладці Стрічка Excel .
  • Натисніть в "Урядовому кур'єрі". Варіант Visual Basic.

  • В рамках проекту Visual Basic для додатків у вікні, натисніть кнопку Вставити випадаючий список до вибрати в "Урядовому кур'єрі". Новий модуль варіант.

А тепер покладіть свої код всередині візуальний редактор коду і натиснути F5 до біг це.

1. Використання функції VBA Rnd для генерації випадкового числа без повторень

На сьогоднішній день, на жаль, це не так. Функція Rnd використовується в Excel VBA до генерувати випадкові числа які є між 0 і 1 ексклюзив.

Завдання : Згенерувати 10 випадкових чисел між 0 і 1 в клітинки А1:А10.

Код : Вставка наступне код в візуальний базовий редактор і натисніть 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-коді. Для довідки, в нашому коді нижня межа це найменша кількість та верхня межа це найбільша кількість в діапазон для генератора випадкових чисел. Ми можемо використовувати наступне формула в нашому кодексі.

(верхня межа - нижня межа + 1) * Rнд + нижня межа

2.1 Генератор випадкових чисел - десятковий

Завдання : Згенерувати 10 випадкових чисел між 10 і 20 в клітинки А1:А10.

Код : Вставка наступне код в візуальний базовий редактор і натисніть 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 = 1randomNumber Next End Sub 

Вихідні дані На наведеному вище скріншоті показано 10 унікальних випадкових чисел в в діапазоні від 1 до 10.

2.2 Генератор випадкових чисел - ціле число

У цій ілюстрації ми будемо використовувати Функція VBA Int до видалити в "Урядовому кур'єрі". дробова частина від випадкові числа .

Завдання : Згенерувати 20 випадкових цілих чисел між 1 і 20 в клітини А1:В10.

Код : Вставка наступне код в візуальний базовий редактор і натисніть 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 Next 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 в клітини А1:В10.

Код : Вставка наступне код в візуальний базовий редактор і натисніть 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)Loop Rng.Value = randomNumber Next End Sub 

Вихідні дані На наведеному вище скріншоті показано 20 унікальних випадкових цілих чисел з 2 знаками після коми в в діапазоні від 1 до 20.

Читати далі: Генерування випадкових чисел в Excel з десятковими знаками (3 способи)

4. Розробка користувацької форми для генератора випадкових чисел без дублікатів в Excel VBA

На цій ілюстрації ми покажемо, як використовувати UserForm в Excel VBA до генерувати випадкові числа з без дублікатів .

Завдання: Згенеруйте 20 випадкових чисел в діапазоні клітин A1:B10 використовуючи UserForm з вхідні значення (i) нижня межа (ii) верхня межа (iii) кількість знаків після коми.

Створіть UserForm:

Виконайте наведені нижче дії, щоб створити UserForm з нашими бажані поля введення .

  • Перейдіть на сторінку Розробник на вкладці Стрічка Excel .
  • Натисніть в "Урядовому кур'єрі". Варіант Visual Basic.

  • В рамках проекту Visual Basic для додатків у вікні, натисніть кнопку Вставити випадаючий список до вибрати в "Урядовому кур'єрі". UserForm варіант.

  • В рамках проекту UserForm додати a етикетка .
  • Підписати етикетка як Нижня межа у властивостях.

  • Додати два більше етикетки названий Upperbund і DecimalPlaces .

  • Тепер додайте три TextBox'и в UserForm .

  • На даному етапі, додавати 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((верхня межа - нижня межа + 1) * Rnd + нижня межа, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Преса F5 до біг в "Урядовому кур'єрі". код та UserForm має з'явився .
  • Покладіть нижня межа , верхня межа, та кількість з десяткові знаки в UserForm і натиснути на кнопку Кнопка "Згенерувати .

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

Читати далі: Як генерувати випадкові числа без дублікатів в Excel (7 способів)

Важливі моменти для запам'ятовування

  • Ми також могли б використати Функція фіксації замість Функція Int до генерувати унікальні цілі числа Функція видаляє в "Урядовому кур'єрі". дробова частина про те, що кількість так само, як і у випадку з Функція Int .

Висновок

Тепер ми знаємо, як генерувати унікальні випадкові числа за допомогою VBA в Excel на відповідних прикладах. Сподіваємося, це допоможе вам більш впевнено користуватися функціоналом. Якщо у вас виникнуть питання або пропозиції, не забувайте залишати їх у формі для коментарів нижче.

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.