Liczby losowe Excel VBA
Aby wygenerować liczby losowe w VBA , mamy wbudowaną funkcję o nazwie RND . Aby wygenerować liczby losowe, wystarczy argument jako liczba i jest to również opcjonalny parametr. Stworzy liczby losowe, które są większe niż 0 i mniejsze niż 1.
Działa to dokładnie tak samo, jak funkcja programu Excel „RAND”. Jak powiedziałem w funkcji arkusza „LOS”, również w VBA możemy generować liczby losowe, które są większe niż 0, ale mniejsze niż 1.
Teraz spójrz na składnię funkcji „RND”.
[Liczba]: Możemy przekazać argument na trzy sposoby.
- Jeśli przekażemy liczbę jako <0, za każdym razem generuje tę samą liczbę losową.
- Jeśli przekażemy liczbę jako 0, powtórzy ona ostatnią podaną liczbę.
- Jeśli przekażemy liczbę> 0, to daje ci różne liczby losowe, tj. Następną liczbę losową w sekwencji.
Jak generować losowe liczby za pomocą kodu VBA?
Możesz pobrać ten szablon VBA Random Numbers Excel tutaj - szablon VBA Random Numbers ExcelPrzykład 1
Teraz zobaczymy prosty przykład użycia funkcji „RND”. Wykonaj poniższe kroki, aby samodzielnie napisać kod VBA.
Krok 1: Zadeklaruj zmienną jako „Integer” w VBA
Kod:
Sub Rnd_Example1 () Dim K As Integer End Sub
Krok 2: Teraz przypisz wartość zmiennej „k” za pomocą funkcji „ RND ”.
Kod:
Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub
Krok 3: Pokaż wartość zwracaną przez zmienną „k” w oknie komunikatu .
Kod:
Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub
Teraz uruchom makro programu Excel i zobacz, jaki jest wynik.
Zobacz, co się stało.
Pokazuje wynik jako 1, gdzie funkcja „RND” może zwracać tylko liczby większe od zera, ale mniejsze od 1.
Musisz myśleć o tym, co jest nie tak.
Nieprawidłowa rzecz to rodzaj typu danych, który przypisaliśmy zmiennej „k”.
Jeśli spojrzysz wstecz na zadeklarowaną zmienną, przypisaliśmy typ danych jako Integer. Ponieważ przypisaliśmy zmiennej jako Integer, może ona wyświetlać tylko liczby całkowite od -32768 do 32767.
Za każdym razem, gdy RND zwraca liczbę dziesiętną, VBA konwertuje liczbę dziesiętną na najbliższą liczbę całkowitą, tj. 1.
Aby więc formuła działała poprawnie, zadeklaruj zmienną jako „ Double ”.
„Podwójne” to typ danych w języku VBA, który może przechowywać wartości dziesiętne.
Kod:
Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub
Teraz kod i zobacz, jaki jest wynik.
Kliknij ok i uruchom jeszcze raz i zobacz, jaki jest wynik.
Tym razem otrzymaliśmy inny wynik. Ponieważ „RND” jest z natury funkcją ulotną, odtwarza różne wyniki za każdym razem, gdy wykonujesz kod.
Przykład nr 2 - za każdym razem otrzymuj tę samą liczbę losową
Jak widzieliśmy w poprzednim przykładzie, funkcja „RND” odtwarza wynik za każdym razem, gdy wykonujemy kod. Aby raz po raz otrzymać tę samą liczbę losową, musimy przekazać argument jako zero.
Kod:
Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub
Spowoduje to wielokrotne generowanie tej samej liczby podczas wykonywania kodu.
Przykład # 3 - Generowanie całej liczby losowej
Możemy również generować liczby całkowite za pomocą innej funkcji VBA lub innych liczb wejściowych. Na przykład spójrz na poniższy kod.
Kod:
Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub
Ten kod wygeneruje losowe liczby całkowite z miejscami dziesiętnymi za każdym razem, gdy wykonujemy kod.
Jeśli patrzysz na liczby całkowite bez miejsc dziesiętnych, możemy użyć poniższego kodu.
Kod:
Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub
Spowoduje to generowanie liczb całkowitych od 1 do 100.