Генеришите листу јединствених случајних бројева користећи ВБА у Мицрософт Екцелу

Преглед садржаја

У овом чланку ћемо креирати прилагођену функцију за генерисање листе јединствених и случајних бројева између наведених опсега.

У овом примеру можемо покренути макро кликом на дугме „Пошаљи“. Пре него што покренемо макро, морамо унети вредности за четири параметра. Добавили смо доњу граничну вредност у ћелији Ц12, горњу границу у ћелији Ц13, број јединствених случајних захтева у ћелији Ц14 и адресу одредишта за коју је потребно уносити ћелију Ц15.

Логичко објашњење

Направили смо прилагођену функцију „УникуеРандомНумберс“ за генерисање листе јединствених и случајних бројева. Ова функција узима потребни број, доњу границу и горњу границу као улазне параметре.

Направили смо макро „ТестУникуеРандомНумберс“ за позивање прилагођене функције „УникуеРандомНумберс“. Овај макро се извршава кликом на дугме „Пошаљи“. Овај макро узима вредност корисничког уноса из опсега Ц12 до Ц15.

Објашњење кода

и = ЦЛнг (Рнд () * (УЛимит - ЛЛимит) + ЛЛимит)

Горња формула се користи за креирање случајног броја између дефинисане горње и доње границе. Функција Рнд () ствара случајни број између 0 и 1.

Опсег (одабир, одабир. Помак (бројач - 1, 0)). Вредност = _

Апплицатион.Транспосе (РандомНумберЛист)

Горњи код се користи за транспоновање излаза низа и додељивање излаза наведеном одредишту.

Молимо следите доле за код

 Опција Експлицитна функција УникуеРандомНумберс (НумЦоунт Ас Лонг, ЛЛимит Ас Лонг, УЛимит Ас Лонг) Ас Вариант 'Декларисање променљивих Дим РандЦолл Ас Цоллецтион Дим и Ас Лонг Дим варТемп () Ас Лонг' Валидатион проверава вредност коју је навео корисник Иф НумЦоунт УЛимит Тхен УникуеРандомНумберс = "Наведена доња граница је већа од наведене горње границе" Изађи из функције крај Ако је НумЦоунт> (УЛимит - ЛЛимит + 1) Тада је УникуеРандомНумберс = "Број потребних јединствених случајних бројева већи је од максималног броја јединственог броја који може постојати између доње границе лимит анд уппер лимит "Екит Фунцтион Енд Иф" Креирање новог објекта прикупљања Сет РандЦолл = Нев Цоллецтион Рандомизе До Он Еррор Ресуме Нект 'Израчунавање случајног броја који постоји између доње и горње границе и = ЦЛнг (Рнд () * (УЛимит - ЛЛимит) + ЛЛимит) 'Уметање јединственог случајног броја у збирку РандЦолл.Адд и, ЦСтр (и) Он Еррор ГоТо 0' Понављање све док збирка нема ставке једнаке нумЦоунт Лооп До РандЦолл.Цоунт = Нум Цоунт РеДим варТемп (1 То НумЦоунт) 'Додељивање вредности ставки у колекцији низу варТемп За и = 1 За НумЦоунт варТемп (и) = РандЦолл (и) Следеће и УникуеРандомНумберс = варТемп Сет РандЦолл = Ништа Брисање варТемп Крај Функција Под ТестУникуеРандом () 'Прогласи променљиве Дим РандомНумберЛист као варијанту Дим Цоунтер Ас Лонг, ЛоверЛимит Ас Лонг, УпперЛимит Ас Лонг Дим Аддресс Ас Стринг' Добивање вредности које уноси корисник Цоунтер = Ранге ("Ц14"). Валуе ЛоверЛимит = Ранге ("Ц12" ) .Валуе УпперЛимит = Ранге ("Ц13"). Валуе Аддресс = Ранге ("Ц15"). Валуе 'Позивање прилагођене функције УникуеРандомНумберс РандомНумберЛист = УникуеРандомНумберс (Цоунтер, ЛоверЛимит, УпперЛимит)' Одабир одредишног опсега (адреса). Селецт 'Додељивање вредност у одредишном опсегу (Селецтион, Селецтион.Оффсет (Цоунтер - 1, 0)). Валуе = _ Апплицатион.Транспосе (РандомНумберЛист) Енд Суб 

Ако вам се допао овај блог, поделите га са пријатељима на Фацебооку. Такође, можете нас пратити на Твиттер -у и Фацебоок -у.

Волели бисмо да чујемо од вас, јавите нам како можемо побољшати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave