Generieren Sie eine Liste eindeutiger Zufallszahlen mit VBA in Microsoft Excel

Inhaltsverzeichnis

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. Vor dem Ausführen des Makros müssen wir Werte für vier Parameter eingeben. Wir haben den unteren Grenzwert in Zelle C12, den oberen Grenzwert in Zelle C13, die Anzahl der einzigartigen Zufallszahlen, die in Zelle C14 erforderlich sind, und die Zieladresse, die ausgegeben wird, ist in Zelle C15 erforderlich.

Logikerklärung

Wir haben die benutzerdefinierte Funktion "UniqueRandomNumbers" erstellt, um eine Liste von eindeutigen und zufälligen Zahlen zu generieren. Diese Funktion verwendet als Eingabeparameter die erforderliche Anzahl, Untergrenze und Obergrenze.

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

Codeerklärung

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

Obige Formel wird verwendet, um die Zufallszahl zwischen der definierten Ober- und Untergrenze zu erstellen. Die Funktion Rnd() erzeugt eine Zufallszahl zwischen 0 und 1.

Bereich(Auswahl, Auswahl.Offset(Zähler - 1, 0)).Wert = _

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 Explizite Funktion UniqueRandomNumbers(NumCount As Long, LLimit As Long, ULimit As Long) As Variant 'Variablen deklarieren Dim RandColl As Collection Dim i As Long Dim varTemp() As Long 'Validierungsprüfung für den vom Benutzer angegebenen Wert If NumCount ULimit Then UniqueRandomNumbers = "Angegebene untere Grenze ist größer als angegebene obere Grenze" Exit Function End If If NumCount > (ULimit - LLimit + 1) Then UniqueRandomNumbers = "Anzahl der erforderlichen eindeutigen Zufallszahl ist größer als die maximale Anzahl der eindeutigen Zahlen, die zwischen unteren Grenze und Obergrenze" Exit Function End If 'Neues Objekt der Sammlung erstellen Set RandColl = New Collection Randomize Do On Error Resume Next 'Berechnen der Zufallszahl, die zwischen der unteren und der oberen Grenze liegt i = CLng(Rnd() * (ULimit - LLimit) + LLimit) 'Einfügen der eindeutigen Zufallszahl in die Sammlung RandColl.Add i, CStr(i) On Error GoTo 0 'Schleife, bis die Sammlung Elemente gleich numCount hat Schleife bis RandColl.Count = Num Count ReDim varTemp(1 To NumCount) 'Wert der Elemente in der Sammlung dem varTemp-Array zuweisen For i = 1 To NumCount varTemp(i) = RandColl(i) Next i UniqueRandomNumbers = varTemp Set RandColl = Nothing Erase varTemp End Function Sub TestUniqueRandomNumbers () 'Variablen deklarieren Dim RandomNumberList As Variant Dim Counter As Long, LowerLimit As Long, UpperLimit As Long Dim Address As String 'Abrufen der vom Benutzer eingegebenen Werte Counter = Range("C14").Value LowerLimit = Range("C12" ).Value UpperLimit = Range("C13").Value Address = Range("C15").Value 'Aufruf der benutzerdefinierten Funktion UniqueRandomNumbers RandomNumberList = UniqueRandomNumbers(Counter, LowerLimit, UpperLimit) 'Auswählen des Zielbereichs (Adresse).Select 'Assigning der Wert im Ziel Range(Selection, Selection.Offset(Counter - 1, 0)).Value = _ Application.Transpose(RandomNumberList) End Sub 

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.

Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave