Если вы хотите создать список уникальных случайных чисел, вы можете использовать функции RANDBETWEEN и VBA RND. В этой статье мы сгенерируем 3 уникальных числа из предоставленного списка .

Вы можете найти исходный вопрос http://www.excelforum.com/excel-programming-vba-macros/1093315-vba-for-do- while-loop.html[здесь]

Вопрос: Я хочу, чтобы макрос генерировал список из 3 случайных чисел из списка чисел, сохраненного в столбце A. Есть условие, о котором необходимо позаботиться о коде VBA. Условие состоит в том, что в столбце B есть 3 числа, поэтому макросу необходимо создать список чисел, которые ни разу не встречались в столбце B. Таким образом, мы можем получить список уникальных номеров в столбцах B и C.

Ниже приведен снимок имеющегося у нас примера:

img1

===

Получить список уникальных случайных чисел; нам нужно выполнить следующие шаги, чтобы запустить редактор VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img2

  • Скопируйте приведенный ниже код в стандартный модуль

Sub RandomNumbers()

Dim ws As Worksheet

Dim ar As Variant

Dim RandomNum As Long

Dim i As Integer

Dim myVal As Long

Randomize

Set ws = ThisWorkbook.Sheets("Numbers")

With ws

ar = .Range("A" & Rows.Count).End(xlUp).Row

.Range("C1:C3").ClearContents

For i = 1 To 3

Do

RandomNum = Int((1 - ar + 1) * Rnd + ar)

myVal = .Range("A" & RandomNum).Value

Loop Until Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing

.Range("C" & i).Value = myVal

Next i

End With

End Sub

img3

Чтобы запустить макрос, мы можем нажать клавишу F5 на клавиатуре, если вы активны на экране редактора Visual Basic. Другой способ запустить макрос — использовать клавишу «ALT + F8»; выберите макрос и нажмите кнопку «Выполнить»

img4

  • Когда мы запускаем код VBA, автоматически создается уникальный список чисел

img5

Пояснение к коду:

В приведенном выше коде мы будем использовать функцию RND & INT вместе с циклом For loop & Do, чтобы получить результат.

  • Мы объявляем Dim ws рабочим листом; цель объявления ws как рабочего листа состоит в том, что мы хотим, чтобы код выполнялся только на определенном рабочем листе, т.е.

Числа в нашем примере Dim RandomNum As Long: это сохранит уникальные числа Set ws = ThisWorkbook.Sheets («Numbers»): эта строка гарантирует, что код будет работать только на листе Numbers. В следующей строке кода будет использоваться оператор With ar = .Range («A» & Rows.Count) .End (xlUp) .Row: эта строка сохранит последнюю ячейку в столбце A (24 в нашем примере)

Range («C1: C3»). ClearContents: эта строка удалит любое существующее содержимое в диапазоне C1: C3 Затем мы запустим цикл For, начиная от 1 до 3 раз с помощью Do Loop, чтобы сгенерировать список случайных чисел и не проверить отсутствие дубликатов. в существующем диапазоне, то есть в столбце B. Заключение: мы можем сгенерировать список различных случайных чисел из alist в Microsoft Excel с небольшой настройкой в ​​приведенном выше коде VBA.

image 48

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]