Come generare numeri casuali in vba?
In VBA, puoi utilizzare diversi modi per generare un numero casuale in Excel e in questo articolo li esamineremo tutti uno per uno.
Funzione RND
Per generare un numero casuale, in VBA, esiste una funzione chiamata RND . Questa funzione significa casuale e quando la usi nel codice restituisce un numero casuale compreso tra 0 e 1. In RND non è necessario specificare alcun argomento.
Range("A1") = Rnd()
Il codice sopra lo utilizza per ottenere un numero casuale in A1 e restituisce 0,705547521.
Ma quando lo usi per un intero intervallo, restituisce lo stesso numero casuale nell’intero intervallo e ciò lo rende nullo da utilizzare per generare numeri casuali più di una volta.
Ora, qui non ha senso usarlo, vero? Ma esiste una soluzione che puoi utilizzare, FOR NEXT LOOP .
Nel codice sopra hai un ciclo che attraversa 10 celle (una per una) a partire dalla cella selezionata e aggiunge un numero casuale.
Ecco il codice completo:
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
Numero casuale tra due numeri
Se vuoi generare un numero casuale tra due numeri definiti, in questo caso devi scrivere il codice utilizzando due funzioni VBA ( RND + INT ). Il codice per questa formula sarebbe come di seguito.
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
Quando esegui questa macro , RND utilizza il numero massimo e il numero minimo impostati per generare il numero casuale e INT rimuove la cifra decimale.
Utilizzo delle funzioni del foglio di lavoro nel codice VBA per generare un numero casuale
In VBA è possibile accedere alle funzioni del foglio di lavoro e utilizzarle per ottenere un risultato specificando gli argomenti. Due funzioni del foglio di calcolo possono aiutarti a ottenere un numero casuale nel risultato.
- RandTra
- RandTableau
Prima di utilizzare queste funzioni, assicurati di comprendere gli argomenti che devi impostare. Ora nel codice seguente hai RANDBETWEEN che genera un numero casuale tra due numeri.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Qui il numero massimo è 2000 e il numero minimo è 1000. Allo stesso modo, puoi utilizzare RANDARRAY che è una funzione di array dinamico.
Ecco il codice.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Se guardi la sintassi di RANDARRAY, scoprirai che puoi inserire numeri casuali in un intervallo intero, cosa che non è possibile con tutti i metodi discussi sopra.