Wie generiert man zufallszahlen in vba?
In VBA können Sie verschiedene Methoden zum Generieren einer Zufallszahl in Excel verwenden. In diesem Artikel werden wir sie alle einzeln betrachten.
RND-Funktion
Um eine Zufallszahl zu generieren, gibt es in VBA eine Funktion namens RND . Diese Funktion bedeutet „zufällig“ und wenn Sie diese Funktion im Code verwenden, gibt sie eine Zufallszahl zwischen 0 und 1 zurück. In RND müssen Sie kein Argument angeben.
Range("A1") = Rnd()
Der obige Code verwendet es, um eine Zufallszahl in A1 zu erhalten, und es wurde 0,705547521 zurückgegeben.
Wenn Sie es jedoch für einen gesamten Bereich verwenden, gibt es im gesamten Bereich dieselbe Zufallszahl zurück, sodass es nicht mehr zum Generieren von Zufallszahlen mehr als einmal verwendet werden kann.
Nun, hier macht es keinen Sinn, es zu verwenden, oder? Aber es gibt eine Lösung, die Sie verwenden können: FOR NEXT LOOP .
Im obigen Code haben Sie eine Schleife, die ausgehend von der ausgewählten Zelle 10 Zellen (eine nach der anderen) durchläuft und eine Zufallszahl hinzufügt.
Hier ist der vollständige Code:
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
Zufallszahl zwischen zwei Zahlen
Wenn Sie eine Zufallszahl zwischen zwei definierten Zahlen generieren möchten, müssen Sie in diesem Fall Code mit zwei VBA-Funktionen ( RND + INT ) schreiben. Der Code für diese Formel würde wie folgt aussehen.
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
Wenn Sie dieses Makro ausführen , verwendet RND die von Ihnen festgelegte Höchstzahl und Mindestzahl, um die Zufallszahl zu generieren, und INT entfernt die Dezimalstelle.
Verwenden von Arbeitsblattfunktionen im VBA-Code zum Generieren einer Zufallszahl
In VBA können Sie auf Arbeitsblattfunktionen zugreifen und diese verwenden, um durch Angabe der Argumente ein Ergebnis zu erhalten. Zwei Tabellenkalkulationsfunktionen können Ihnen dabei helfen, im Ergebnis eine Zufallszahl zu erhalten.
- RandBetween
- RandTableau
Bevor Sie diese Funktionen verwenden, stellen Sie sicher, dass Sie die Argumente verstehen, die Sie festlegen müssen. Im folgenden Code haben Sie nun RANDBETWEEN, das eine Zufallszahl zwischen zwei Zahlen generiert.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Hier beträgt die maximale Anzahl 2000 und die minimale Anzahl 1000. Ebenso können Sie RANDARRAY verwenden, eine dynamische Array-Funktion.
Hier ist der Code.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Wenn Sie sich die Syntax des RANDARRAY ansehen, werden Sie feststellen, dass Sie Zufallszahlen in einem Ganzzahlbereich eingeben können, was mit allen oben besprochenen Methoden nicht möglich ist.