In diesem Artikel erstellen wir eine benutzerdefinierte Funktion, um eine Liste eindeutiger und zufälliger Zahlen zwischen den angegebenen Bereichen zu generieren.

In diesem Beispiel können wir das Makro ausführen, indem wir auf die Schaltfläche „Senden“ klicken.

Bevor wir das Makro ausführen, müssen wir Werte für vier Parameter eingeben. Wir haben den unteren Grenzwert in Zelle C12, die obere Grenze in Zelle C13, die Anzahl der in Zelle C14 erforderlichen eindeutigen Zufälle und die Zieladresse angegeben, an der die Ausgabe in Zelle C15 erforderlich ist.

ArrowMain

Logische Erklärung

Wir haben die benutzerdefinierte Funktion „UniqueRandomNumbers“ erstellt, um eine Liste mit eindeutigen und zufälligen Zahlen zu erstellen. Diese Funktion verwendet die erforderliche Anzahl, Untergrenze und Obergrenze als Eingabeparameter.

Wir haben das Makro „TestUniqueRandomNumbers“ erstellt, um die benutzerdefinierte Funktion „UniqueRandomNumbers“ aufzurufen. Dieses Makro wird ausgeführt, indem Sie auf die Schaltfläche „Senden“ klicken. Dieses Makro nimmt den Benutzereingabewert aus dem Bereich C12 bis C15.

ArrowOutput

Code Erklärung

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

Die obige Formel wird verwendet, um die Zufallszahl zwischen der definierten oberen und unteren Grenze zu erstellen. Die Funktion Rnd () erstellt eine Zufallszahl zwischen 0 und 1.

Range (Selection, Selection.Offset (Counter – 1, 0)). Value = _ Application.Transpose (RandomNumberList)

Der obige Code wird verwendet, um die Ausgabe des Arrays zu transponieren und die Ausgabe dem angegebenen Ziel zuzuweisen.

Bitte folgen Sie unten für den Code

Option Explicit

Function 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 specified by the user

If NumCount < 1 Then

UniqueRandomNumbers = "Number of unique random number required is less than 1"

Exit Function

End If

If LLimit > ULimit Then

UniqueRandomNumbers = "Specified lower limit is greater than specified upper limit"

Exit Function

End If

If NumCount > (ULimit - LLimit + 1) Then

UniqueRandomNumbers = "Number of required unique random number is greater than maximum number of unique number that can exists between lower limit and upper limit"

Exit Function

End If

'Creating new object of collection

Set RandColl = New Collection

Randomize

Do

On Error Resume Next



'Calculating the random number that exists between the lower and upper limit

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



'Inserting the  unique random number in the collection

RandColl.Add i, CStr(i)



On Error GoTo 0

'Looping until collection have items equal to numCount

Loop Until RandColl.Count = NumCount

ReDim varTemp(1 To NumCount)

'Assigning value of the items in the collection to varTemp array

For i = 1 To NumCount

varTemp(i) = RandColl(i)

Next i

UniqueRandomNumbers = varTemp

Set RandColl = Nothing

Erase varTemp

End Function

Sub TestUniqueRandomNumbers()

'Declare variables

Dim RandomNumberList As Variant

Dim Counter As Long, LowerLimit As Long, UpperLimit As Long

Dim Address As String

'Getting the values input by the user

Counter = Range("C14").Value

LowerLimit = Range("C12").Value

UpperLimit = Range("C13").Value

Address = Range("C15").Value

'Calling custom function UniqueRandomNumbers

RandomNumberList = UniqueRandomNumbers(Counter, LowerLimit, UpperLimit)

'Selecting the destination

Range(Address).Select

'Assigning the value in the destination

Range(Selection, Selection.Offset(Counter - 1, 0)).Value = _

Application.Transpose(RandomNumberList)



End Sub

Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]