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

  • Поделись Этим
Hugh West

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

Скачать Практическое пособие

Скачайте эту рабочую тетрадь для тренировок, чтобы заниматься во время чтения этой статьи.

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

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

Написать код в редакторе Visual Basic

На генерировать случайные числа без дубликатов нам нужно открыть и написать код VBA в редактор visual basic. Следуйте за шаги на открыть сайт редактор визуального базового языка и написать там код.

  • Перейти к Разработчик на вкладке Лента Excel .
  • Нажмите сайт Опция Visual Basic.

  • В Visual Basic For Applications окно, нажмите кнопку Вставка выпадающего списка на выберите сайт Новый модуль вариант.

Теперь положите свой код внутри визуальный редактор кода и нажмите F5 на запустить это.

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

Сайт Функция 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 Next End 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 Next End Sub 

Выход : На скриншоте выше показано 20 уникальных случайных целых чисел в в диапазоне от 1 до 20.

Читать далее: Генератор случайных чисел в Excel без повторений (9 методов)

Похожие чтения

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

3. Укажите десятичные знаки для генератора уникальных случайных чисел в Excel VBA

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

Round(expression, [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)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 For Applications окно, нажмите кнопку Вставка выпадающего списка на выберите сайт UserForm вариант.

  • В UserForm add 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((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 на запустить сайт код и UserForm есть появился .
  • Положите нижняя граница , верхний борт, и номер из десятичные знаки в UserForm и попал в Создать кнопку .

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

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

О чем следует помнить

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

Заключение

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

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.