Generer liste over unikke tilfældige tal ved hjælp af VBA i Microsoft Excel

Indholdsfortegnelse

I denne artikel vil vi oprette en brugerdefineret funktion til at generere en liste over unikke og tilfældige tal mellem de angivne intervaller.

I dette eksempel kan vi køre makroen ved at klikke på knappen "Send". Inden vi kører makroen, skal vi indtaste værdier for fire parametre. Vi har leveret den nedre grænseværdi i celle C12, øvre grænse i celle C13, antal unikke tilfældige kræves i celle C14 og destinationsadresse, hvor output er påkrævet i celle C15.

Logisk forklaring

Vi har oprettet en “UniqueRandomNumbers” brugerdefineret funktion til at generere en liste over unikke og tilfældige tal. Denne funktion tager det nødvendige antal, nedre grænse og øvre grænse som inputparametre.

Vi har oprettet “TestUniqueRandomNumbers” makro for at kalde “UniqueRandomNumbers” brugerdefinerede funktion. Denne makro udføres ved at klikke på knappen "Send". Denne makro tager brugerens inputværdi fra området C12 til C15.

Kode forklaring

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

Ovenstående formel bruges til at oprette det tilfældige tal mellem den definerede øvre og nedre grænse. Rnd () -funktionen opretter et tilfældigt tal mellem 0 og 1.

Område (markering, markering. Forskydning (tæller - 1, 0)). Værdi = _

Application.Transpose (RandomNumberList)

Ovenstående kode bruges til at transponere output fra arrayet og tildele output til den angivne destination.

Følg venligst nedenstående for koden

 Option Eksplicit funktion UniqueRandomNumbers (NumCount As Long, LLimit As Long, ULimit As Long) As Variant 'Declaring variables Dim RandColl As Collection Dim i As Long Dim varTemp () As Long' Validation check for the value specificed of the user If NumCount ULimit Then UniqueRandomNumbers = "Angivet nedre grænse er større end angivet øvre grænse" Afslut funktion Afslut Hvis IfCount> (ULimit - LLimit + 1) Så UniqueRandomNumbers = "Antal krævede unikke tilfældige tal er større end maksimalt antal unikt tal, der kan eksistere mellem lavere grænse og øvre grænse "Afslut funktion Afslut hvis 'Oprettelse af nyt genstand for samling Indstil RandColl = Ny samling Randomiser Gør ved fejl Genoptag næste' Beregning af det tilfældige tal, der findes mellem den nedre og øvre grænse i = CLng (Rnd () * (ULimit - LLimit) + LLimit) 'Indsættelse af det unikke tilfældige tal i samlingen RandColl.Add i, CStr (i) On Error GoTo 0' Looping indtil samling har elementer lig med numCount Loop indtil RandColl.Count = Num Count ReDim varTemp (1 til NumCount) 'Tildeling af værdien af ​​emnerne i samlingen til varTemp array For i = 1 til NumCount varTemp (i) = RandColl (i) Næste i UniqueRandomNumbers = varTemp Indstil RandColl = Intet Slet varTemp Slut funktion Sub TestUniqueRandomNumbers () 'Declare variables Dim RandomNumberList As Variant Dim Counter As Long, LowerLimit As Long, UpperLimit As Long Dim Address As String' Hent de værdier, der er indtastet af brugeren Counter = Range ("C14"). Værdi LowerLimit = Range ("C12" ) .Værdi UpperLimit = Range ("C13"). Value Address = Range ("C15"). Value 'Calling custom function UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers (Counter, LowerLimit, UpperLimit)' Valg af destinationsområde (adresse) .Vælg 'Tildeling' værdien i destinationsområdet (Selection, Selection.Offset (Counter - 1, 0)). Value = _ Application.Transpose (RandomNumberList) End Sub 

Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave