Оглавление
В данной статье приведены 4 примера генератор случайных чисел без дубликатов с помощью VBA в Excel. Здесь мы будем использовать встроенную в Excel функцию Rnd для настройки нашего кода. Давайте погрузимся в примеры, чтобы изучить технику генерации уникальных случайных чисел.
Скачать Практическое пособие
Скачайте эту рабочую тетрадь для тренировок, чтобы заниматься во время чтения этой статьи.
Генератор случайных чисел без дубликатов.xlsm4 Примера генератора случайных чисел без дубликатов в 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 на подходящих примерах. Надеемся, что это поможет вам более уверенно пользоваться функционалом. Любые вопросы или предложения не забудьте оставить в поле для комментариев ниже.