Wenn Sie eine Liste eindeutiger Zufallszahlen generieren möchten, können Sie RANDBETWEEN-Funktionen und VBA RND verwenden. In diesem Artikel generieren wir 3 eindeutige Nummern aus der bereitgestellten Liste.
Sie finden die ursprüngliche Frage hier
Frage: Ich möchte, dass ein Makro eine Liste von 3 Zufallszahlen aus einer Liste von Zahlen generiert, die in Spalte A gespeichert sind. Es gibt eine Bedingung, dass VBA-Code beachtet werden muss. Die Bedingung ist, dass es in Spalte B 3 Zahlen gibt, daher muss das Makro eine Liste von Zahlen erstellen, die in Spalte B nicht einmal aufgetreten sind. Auf diese Weise können wir eine Liste mit eindeutigen Zahlen in den Spalten B und C haben.
Es folgt die Momentaufnahme des Beispiels, das wir haben:
Um die Liste der eindeutigen Zufallszahlen zu erhalten; Wir müssen die folgenden Schritte ausführen, um den VB-Editor zu starten
- Klicken Sie auf die Registerkarte Entwickler
- Wählen Sie aus der Gruppe Code die Option Visual Basic
- Kopieren Sie den folgenden Code in das Standardmodul
Sub RandomNumbers() Dim ws As Worksheet Dim ar As Variant Dim RandomNum As Long Dim i As Integer Dim myVal As Long Randomize Set ws = ThisWorkbook.Sheets("Numbers") With ws ar = .Range("A" & Rows.Count ).End(xlUp).Row .Range("C1:C3").ClearContents For i = 1 To 3 Do RandomNum = Int((1 - ar + 1) * Rnd + ar) myVal = .Range("A" & RandomNum).Value Loop Until Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing .Range("C" & i).Value = myVal Next i End With End Sub
- Um das Makro auszuführen, können wir die Taste F5 auf der Tastatur drücken, wenn Sie im Bildschirm des Visual Basic-Editors aktiv sind
- Eine andere Möglichkeit, das Makro auszuführen, besteht darin, die Taste "ALT + F8" zu verwenden; Wählen Sie das Makro aus und klicken Sie auf die Schaltfläche Ausführen
- Während wir den VBA-Code ausführen, wird die eindeutige Nummernliste automatisch generiert
Code-Erklärung:
Im obigen Code verwenden wir die RND- und INT-Funktion zusammen mit der For-Schleife und der Do-Schleife, um das Ergebnis zu erhalten.
- Wir deklarieren Dim ws als Arbeitsblatt; Der Zweck der Deklaration von ws als Arbeitsblatt besteht darin, dass der Code nur auf einem bestimmten Arbeitsblatt ausgeführt werden soll, d. h. Zahlen in unserem Beispiel
- Dim RandomNum As Long: Dadurch werden die eindeutigen Zahlen gespeichert
- Set ws = ThisWorkbook.Sheets("Numbers"): Diese Zeile stellt sicher, dass der Code nur auf dem Numbers-Blatt ausgeführt wird
- Die nächste Codezeile verwendet die With-Anweisung
- ar = .Range("A" & Rows.Count).End(xlUp).Row: Diese Zeile speichert die letzte Zelle in Spalte A (in unserem Beispiel 24)
- .Range("C1:C3").ClearContents: Diese Zeile löscht alle vorhandenen Inhalte im Bereich C1:C3
- Als Nächstes führen wir die For-Schleife 1 bis 3 Mal mit Do Loop aus, um eine Liste von Zufallszahlen zu generieren und keine Duplikate im vorhandenen Bereich, d. h. Spalte B, zu überprüfen
Abschluss: Wir können eine Liste verschiedener Zufallszahlen aus einer Liste in Microsoft Excel mit kleinen Optimierungen im obigen VBA-Code generieren.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site