Izveidojiet unikālu izlases numuru sarakstu, izmantojot Microsoft Excel VBA

Satura rādītājs

Šajā rakstā mēs izveidosim pielāgotu funkciju, lai ģenerētu unikālu un nejaušu skaitļu sarakstu starp norādītajiem diapazoniem.

Šajā piemērā mēs varam palaist makro, noklikšķinot uz pogas “Iesniegt”. Pirms makro palaišanas mums jāievada četru parametru vērtības. Šūnā C12 mēs piegādājam apakšējo robežvērtību, šūnā C13 - augšējo robežu, šūnā C14 pieprasīto unikālo izlases gadījumu skaitu un galamērķa adresi - šūnā C15.

Loģisks skaidrojums

Mēs esam izveidojuši pielāgotu funkciju “UniqueRandomNumbers”, lai ģenerētu unikālu un nejaušu skaitļu sarakstu. Šī funkcija kā ievades parametrus ņem vajadzīgo skaitli, apakšējo robežu un augšējo robežu.

Mēs esam izveidojuši makro “TestUniqueRandomNumbers”, lai izsauktu “UniqueRandomNumbers” pielāgoto funkciju. Šis makro tiek izpildīts, noklikšķinot uz pogas “Iesniegt”. Šis makro ņem lietotāja ievadīto vērtību no diapazona C12 līdz C15.

Koda skaidrojums

i = CLng (Rnd () * (ULimit - LLimit) + LLimit)

Iepriekš minēto formulu izmanto, lai izveidotu nejaušu skaitli starp noteikto augšējo un apakšējo robežu. Funkcija Rnd () izveido nejaušu skaitli no 0 līdz 1.

Diapazons (izvēle, izvēle. Nobīde (skaitītājs - 1, 0)). Vērtība = _

Application.Transpose (RandomNumberList)

Iepriekš minētais kods tiek izmantots, lai transponētu masīva izvadi un piešķirtu izvadi norādītajam mērķim.

Lūdzu, sekojiet tālāk norādītajam kodam

 Opcija Skaidra funkcija UniqueRandomNumbers (NumCount tik garš, LLimit tik garš, ULimit tik garš) kā variants 'Deklarējošie mainīgie Dim RandColl kā kolekcija Dim i Kā garš Dim varTemp () Kā garš' Validācijas pārbaude lietotāja norādītajai vērtībai If NumCount ULimit then UniqueRandomNumbers = "Norādītā apakšējā robeža ir lielāka par noteikto augšējo robežu" Izejas funkcijas beigas Ja Ja NumCount> (ULimit - LLimit + 1), tad UniqueRandomNumbers = "Nepieciešamā unikālā nejaušā skaitļa skaits ir lielāks par maksimālo unikālā numura skaitu, kas var pastāvēt starp apakšējo robeža un augšējā robeža "Iziet Funkcija Beigt Ja" Jaunas kolekcijas objekta izveide Iestatiet RandColl = Jauna kolekcija Randomizēt Do On Error Resume Next "Aprēķinot nejaušo skaitli, kas pastāv starp apakšējo un augšējo robežu i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Unikāla nejauša skaitļa ievietošana kolekcijā RandColl. Pievienot i, CStr (i) On Error GoTo 0' Looping, līdz kolekcijai ir vienumi, kas vienādi ar numCount Loop līdz RandColl.Count = Num Count ReDim varTemp (1 to NumCount) 'Kolekcijas vienumu vērtības piešķiršana varTemp masīvam Attiecībā uz i = 1 Uz NumCount varTemp (i) = RandColl (i) Next i UniqueRandomNumbers = varTemp Set RandColl = Nothing Erase varTemp End Function Sub TestUniqueRandomNumbers () 'Deklarēt mainīgos Dim RandomNumberList kā variantu Dim skaitītājs tik garš, LowerLimit tik garš, UpperLimit kā garš Dim adrese kā virkne' Lietotāja ievadīto vērtību iegūšana Counter = Range ("C14"). Value LowerLimit = Range ("C12" ) .Value UpperLimit = Diapazons ("C13"). Vērtība Address = Range ("C15"). Value 'Calling custom function UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Galamērķa diapazona (adreses) atlase. Izvēlieties 'Assigning vērtība galamērķa diapazonā (Selection, Selection.Offset (Counter - 1, 0)). Value = _ Application. Transpose (RandomNumberList) End Sub 

Ja jums patika šis emuārs, kopīgojiet to ar saviem draugiem Facebook. Varat arī sekot mums Twitter un Facebook.

Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot savu darbu un padarīt to labāku jums. Rakstiet mums e -pasta vietnē

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave