Excel VBA: Generatore di numeri casuali senza duplicati (4 esempi)

  • Condividi Questo
Hugh West

Questo articolo illustra 4 esempi di generatore di numeri casuali senza duplicati usando VBA in Excel. Qui useremo la funzione Rnd integrata in Excel per configurare il nostro codice. Immergiamoci negli esempi per imparare le tecniche per generare numeri casuali unici.

Scarica il quaderno di esercizi

Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.

Generatore di numeri casuali senza duplicati.xlsm

4 esempi di generatore di numeri casuali senza duplicati in Excel VBA

Scrivere codice nell'editor di Visual Basic

A generare numeri casuali senza duplicati , abbiamo bisogno di aperto e scrivere codice VBA nel editor di Visual Basic. Seguire il passi a aperto il editor di visual basic e scriverci del codice.

  • Vai al sito Sviluppatore dalla scheda Nastro di Excel .
  • Cliccare il Opzione Visual Basic.

  • Nel Visual Basic per le applicazioni fare clic sul pulsante Inserire un menu a tendina a selezionare il Nuovo modulo opzione.

Ora mettete il vostro codice all'interno del editor di codice visivo e premere F5 a corsa it.

1. Uso della funzione Rnd di VBA per generare numeri casuali senza duplicati

Il Funzione Rnd è utilizzato in Excel VBA a generare numeri casuali che sono tra 0 e 1 esclusivo.

Compito : Generare 10 numeri casuali tra 0 e 1 in celle A1:A10.

Codice : Inserire il seguente codice nel editor di visual basic e premere F5 a corsa it.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

Uscita La schermata precedente mostra 10 numeri unici casuali nel intervallo di 0 e 1.

Codice Spiegazione:

In questo codice, abbiamo usato il metodo Funzione Rnd a inserire numeri casuali nel intervallo di celle A1:A10 . Prima inserimento a nuovo numero , abbiamo utilizzato un Ciclo Do While a sguardo per il numero nel intervallo di celle predefinito (A1:A10) se esiste già o non Per controllare il esistenza del numero nel gamma di celle ogni volta, abbiamo configurato il codice con l'opzione Funzione COUNTIF , Questa funzione controlli a nuovo numero casuale nel elenco di numeri già esistenti prima di inserirlo.

Per saperne di più: Formula di Excel per generare numeri casuali (5 esempi)

2. Generatore di numeri casuali per limiti inferiori e superiori definiti senza duplicati

A generare numeri casuali all'interno di un intervallo definito è necessario impostare il parametro limite inferiore e limite superiore nel nostro codice VBA. A titolo informativo, il file limite inferiore è il numero più basso e il limite superiore è il numero più alto nel gamma per il generatore di numeri casuali. Possiamo usare la seguente formula formula nel nostro codice.

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 Generatore di numeri casuali - Decimale

Compito : Generare 10 numeri casuali tra 10 e 20 in celle A1:A10.

Codice : Inserire il seguente codice nel editor di visual basic e premere F5 a corsa it.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =numero casuale successivo Fine Sub 

Uscita La schermata precedente mostra 10 numeri unici casuali nel intervallo di 1 e 10.

2.2 Generatore di numeri casuali: numeri interi

In questa illustrazione, si utilizzerà l'opzione Funzione VBA Int a rimuovere il parte frazionaria dal numeri casuali .

Compito : Generare 20 numeri interi casuali tra 1 e 20 in celle A1:B10.

Codice : Inserire il seguente codice nel editor di visual basic e premere F5 a corsa it.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub 

Uscita La schermata precedente mostra 20 numeri interi casuali unici nel intervallo tra 1 e 20.

Per saperne di più: Generatore di numeri casuali in Excel senza ripetizioni (9 metodi)

Letture simili

  • Generatore di numeri casuali con strumento di analisi dei dati e funzioni in Excel
  • Come generare dati casuali in Excel (9 metodi semplici)
  • Generatore di numeri casuali a 5 cifre in Excel (7 esempi)
  • Generatore di numeri casuali a 4 cifre in Excel (8 esempi)
  • Generare un numero casuale da un elenco in Excel (4 modi)

3. Specificare le posizioni decimali per il generatore di numeri casuali unici in Excel VBA

Possiamo utilizzare il Funzione circolare nel nostro codice a specificare il numero di decimali nel numeri unici generati casualmente . il sintassi della funzione è-

Round(espressione, [numdecimali])

Abbiamo bisogno di specificare il 2° argomento come da nostra requisito .

Compito : Generare 20 numeri casuali con 2 cifre decimali tra 1 e 20 in celle A1:B10.

Codice : Inserire il seguente codice nel editor di visual basic e premere F5 a corsa it.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub 

Uscita La schermata precedente mostra 20 numeri interi casuali unici con 2 cifre decimali nel intervallo tra 1 e 20.

Per saperne di più: Generare numeri casuali in Excel con decimali (3 metodi)

4. Sviluppare una forma utente per il generatore di numeri casuali senza duplicati in Excel VBA

In questa illustrazione, mostriamo come utilizzare un elemento Modulo utente in Excel VBA a generare numeri casuali con nessun duplicato .

Compito: Generare 20 numeri casuali nell'intervallo di celle A1:B10 utilizzando un Modulo utente con il valori di ingresso (i) limite inferiore (ii) limite superiore (iii) numero di cifre decimali.

Creare un modulo utente:

Seguire la procedura descritta di seguito per creare un Modulo utente con il nostro campi di immissione desiderati .

  • Vai al sito Sviluppatore dalla scheda Nastro di Excel .
  • Cliccare il Opzione Visual Basic.

  • Nel Visual Basic per le applicazioni fare clic sul pulsante Inserire un menu a tendina a selezionare il Modulo utente opzione.

  • Nel Aggiungere un modulo utente a etichetta .
  • Didascalia il etichetta come Limite inferiore nelle proprietà.

  • Aggiungi due di più etichette denominato Upperbund e Spazi decimali .

  • Ora aggiungere tre caselle di testo nel Modulo utente .

  • In questa fase, aggiungere a Pulsante di comando e dargli un nome Generare .

  • Ora, doppio clic il Pulsante di comando e inserire quanto segue codice nel editor di codice .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Stampa F5 a corsa il codice e il Modulo utente ha apparso .
  • Mettere il limite inferiore , in alto, e il numero di decimali nel Modulo utente e colpire il Pulsante Genera .

Uscita : In celle A1:B10 , ci sono 20 numeri casuali con 2 cifre decimali nel da 1 a 30.

Per saperne di più: Come generare numeri casuali senza duplicati in Excel (7 modi)

Cose da ricordare

  • Si può anche utilizzare il metodo Correggere la funzione al posto del Funzione Int a generare numeri interi unici La funzione rimuove il parte frazionaria di un numero proprio come il Funzione Int .

Conclusione

Ora sappiamo come generare numeri casuali unici utilizzando VBA in Excel con l'aiuto di esempi appropriati. Speriamo che questo vi aiuti a utilizzare la funzionalità con maggiore sicurezza. Per qualsiasi domanda o suggerimento, non dimenticate di inserirlo nella casella dei commenti qui sotto.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.