Se desideri generare un elenco di numeri casuali univoci, puoi utilizzare le funzioni RANDBETWEEN e VBA RND. In questo articolo, genereremo 3 numeri univoci dall’elenco fornito .

Puoi trovare la domanda originale qui

Domanda: desidero che una macro generi un elenco di 3 numeri casuali da un elenco di numeri salvati nella colonna A. Esiste una condizione di cui è necessario occuparsi del codice VBA. La condizione è che ci siano 3 numeri che esistono nella colonna B, quindi la macro deve creare un elenco di numeri che non si sono verificati una volta nella colonna B. In questo modo, possiamo avere un elenco di numeri univoci nella colonna B e C.

Di seguito è riportata l’istantanea dell’esempio che abbiamo:

img1

===

Per ottenere l’elenco di numeri casuali univoci; è necessario seguire i passaggi seguenti per avviare l’editor VB Fare clic sulla scheda Sviluppatore Dal gruppo Codice selezionare Visual Basic

img2

  • Copia il codice seguente nel modulo standard

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

img3

Per eseguire la macro, possiamo premere il tasto F5 dalla tastiera se sei attivo nello schermo di Visual Basic Editor. Un altro modo per eseguire la macro è usare il tasto “ALT + F8”; seleziona la macro e fai clic sul pulsante Esegui

img4

  • Mentre eseguiamo il codice VBA, l’elenco univoco di numeri verrà generato automaticamente

img5

Spiegazione del codice:

Nel codice sopra, useremo la funzione RND & INT insieme a For loop & Do loop per ottenere il risultato.

  • Dichiariamo Dim ws come foglio di lavoro; lo scopo di dichiarare ws come foglio di lavoro è che vogliamo che il codice venga eseguito solo su un foglio di lavoro specifico, ad esempio

Numbers nel nostro esempio Dim RandomNum As Long: questo salverà i numeri univoci Set ws = ThisWorkbook.Sheets (“Numbers”): questa riga assicurerà che il codice venga eseguito solo sul foglio Numbers La prossima riga di codice utilizzerà l’istruzione With ar = .Range (“A” & Rows.Count) .End (xlUp) .Row: questa riga salverà l’ultima cella nella colonna A (24 nel nostro esempio)

Range (“C1: C3”). ClearContents: questa riga cancellerà qualsiasi contenuto esistente nell’intervallo C1: C3 Successivamente, eseguiremo il ciclo For partendo da 1 a 3 volte con Do Loop per generare un elenco di numeri casuali e controllando l’assenza di duplicati nell’intervallo esistente, ad esempio colonna B Conclusione: possiamo generare un elenco di numeri casuali distinti da un elenco in Microsoft Excel con smalltweaking nel codice VBA sopra.

image 48

Se i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.

_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_