Ако искате да генерирате списък с уникални случайни числа, можете да използвате функциите RANDBETWEEN & VBA RND. В тази статия ще генерираме 3 уникални номера от предоставения списък.
Можете да намерите оригинален въпрос тук
Въпрос: Искам макрос да генерира списък от 3 случайни числа от списък с числа, записани в колона А. Има условие, за което трябва да се погрижим за VBA кода. Условието е, че има 3 числа, които съществуват в колона B, следователно макросът трябва да създаде списък с числа, които не са се появявали веднъж в колона B. По този начин можем да имаме списък с уникални числа в колона B & C.
Следва моментната снимка на примера, който имаме:
За да получите списъка с уникални случайни числа; трябва да следваме стъпките по -долу, за да стартираме VB редактор
- Кликнете върху раздела Разработчик
- От групата кодове изберете Visual Basic
- Копирайте кода по -долу в стандартния модул
Sub RandomNumbers () Dim ws As Workheet 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). Цикъл на стойност до диапазон ("B1: C24"). Намерете (what: = myVal, lookat: = xlWhole) не е нищо. Range ("C" & i) .Value = myVal Next i End With End Sub
- За да стартираме макроса, можем да натиснем клавиша F5 от клавиатурата, ако сте активни на екрана на Visual Basic Editor
- Друг начин за стартиране на макроса е използването на клавиша “ALT + F8”; изберете макроса и щракнете върху бутона Run
- Докато изпълняваме VBA кода, уникалният списък с числа ще се генерира автоматично
Код Обяснение:
В горния код ще използваме функцията RND & INT заедно с For loop & Do цикъл, за да получим резултата.
- Обявяваме Dim ws като работен лист; целта на декларирането на ws като работен лист е, че искаме само кодът да се изпълнява на конкретен работен лист, т.е. Numbers в нашия пример
- Dim RandomNum As Long: това ще запази уникалните числа
- Задайте 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
Заключение: Можем да генерираме списък с отделни случайни числа от списък в Microsoft Excel с малки настройки в горния код на VBA.
Ако ви харесаха нашите блогове, споделете го с приятелите си във Facebook. Можете също така да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим, допълним или обновим работата си и да я подобрим. Пишете ни на имейл сайта