Excel VBA: Generador de Números Aleatorios sin Duplicados (4 Ejemplos)

  • Compartir Este
Hugh West

Este artículo ilustra 4 ejemplos de generador de números aleatorios sin duplicados utilizando VBA en Excel. Aquí utilizaremos la función Rnd incorporada de Excel para configurar nuestro código. Sumerjámonos en los ejemplos para aprender las técnicas para generar números aleatorios únicos.

Descargar el cuaderno de prácticas

Descárgate este cuaderno de prácticas para ejercitarte mientras lees este artículo.

Generador de números aleatorios sin duplicados.xlsm

4 Ejemplos de generador de números aleatorios sin duplicados en Excel VBA

Escribir código en el editor de Visual Basic

A generar números aleatorios sin duplicados necesitamos abra y escribir código VBA en el editor de visual basic. Siga las pasos a abra el editor de visual basic y escribir algo de código allí.

  • Ir a la Desarrollador de la pestaña Cinta Excel .
  • Haga clic en el Opción Visual Basic.

  • En el Visual Basic para aplicaciones haga clic en el botón Insertar desplegable a seleccione el Nuevo módulo opción.

Ahora pon tu código dentro del editor visual de código y pulse F5 a ejecute eso.

1. Uso de la función Rnd de VBA para generar números aleatorios sin duplicados

En Función Rnd se utiliza en Excel VBA a generar números aleatorios que son entre 0 y 1 exclusivo.

Tarea : Generar 10 números aleatorios entre 0 y 1 en celdas A1:A10.

Código : Inserte lo siguiente código en el editor de visual basic y pulse F5 a ejecute eso.

 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 

Salida La captura de pantalla anterior muestra 10 números aleatorios únicos en el entre 0 y 1.

Explicación del código:

En este código, utilizamos la función Función Rnd a insertar números aleatorios en el rango de celdas A1:A10 . antes insertar a nuevo número utilizamos un Bucle Do While a mira para la número en el rango de celdas predefinido (A1:A10) si ya existe o no Para comprobar el existencia de la número en el rango de celdas cada vez, configuramos el código con la función Función COUNTIF Esta función comprueba a nuevo número aleatorio en el lista de números ya existentes antes de insertarlo.

Más información: Fórmula Excel para generar números aleatorios (5 ejemplos)

2. Generador de números aleatorios para límites inferior y superior definidos sin duplicados

A generar números aleatorios dentro de un rango definido tenemos que fijar el de bajada y límite superior en nuestro código VBA. A título informativo, el de bajada es el número más bajo y el límite superior es el número más alto en el gama para el generador de números aleatorios. Podemos utilizar lo siguiente fórmula en nuestro código.

(límite superior - límite inferior + 1) * Rnd + límite inferior

2.1 Generador de números aleatorios - Decimal

Tarea : Generar 10 números aleatorios entre 10 y 20 en celdas A1:A10.

Código : Inserte lo siguiente código en el editor de visual basic y pulse F5 a ejecute eso.

 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 =randomNumber Next End Sub 

Salida La captura de pantalla anterior muestra 10 números aleatorios únicos en el entre 1 y 10.

2.2 Generador de números aleatorios - Entero

En esta ilustración, utilizaremos la función Función Int de VBA a eliminar el parte fraccionaria del números aleatorios .

Tarea : Generar 20 números enteros aleatorios entre 1 y 20 en celdas A1:B10.

Código : Inserte lo siguiente código en el editor de visual basic y pulse F5 a ejecute eso.

 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 

Salida La captura de pantalla anterior muestra 20 números enteros aleatorios únicos en el entre 1 y 20.

Más información: Generador de números aleatorios en Excel sin repeticiones (9 métodos)

Lecturas similares

  • Generador de números aleatorios con herramienta de análisis de datos y funciones en Excel
  • Cómo generar datos aleatorios en Excel (9 métodos sencillos)
  • Generador de Números Aleatorios de 5 Dígitos en Excel (7 Ejemplos)
  • Generador de Números Aleatorios de 4 Dígitos en Excel (8 Ejemplos)
  • Generar un número aleatorio a partir de una lista en Excel (4 maneras)

3. Especificar decimales para el generador único de números aleatorios en Excel VBA

Podemos utilizar el Función redonda en nuestro código a especifique el número de decimales en el números únicos generados aleatoriamente . sintaxis de la función es-

Redondear(expresión, [númerodecimales])

Necesitamos especifique el 2º argumento según nuestro requisito .

Tarea : Generar 20 números aleatorios con 2 decimales entre 1 y 20 en celdas A1:B10.

Código : Inserte lo siguiente código en el editor de visual basic y pulse F5 a ejecute eso.

 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 

Salida La captura de pantalla anterior muestra 20 números enteros aleatorios únicos con 2 decimales en el entre 1 y 20.

Más información: Generar Número Aleatorio en Excel con Decimales (3 Métodos)

4. Desarrollar un formulario de usuario para el generador de números aleatorios sin duplicados en Excel VBA

En esta ilustración, mostraremos cómo utilizar un Formulario de usuario en Excel VBA a generar números aleatorios con sin duplicados .

Tarea: Generar 20 números aleatorios en el rango de celdas A1:B10 utilizando un Formulario de usuario con el valores de entrada (i) de bajada (ii) límite superior (iii) número de decimales.

Crear un UserForm:

Siga los pasos que se indican a continuación para crear un Formulario de usuario con nuestro campos de entrada deseados .

  • Ir a la Desarrollador de la pestaña Cinta Excel .
  • Haga clic en el Opción Visual Basic.

  • En el Visual Basic para aplicaciones haga clic en el botón Insertar desplegable a seleccione el Formulario de usuario opción.

  • En el UserForm añadir a etiqueta .
  • Pie de foto etiqueta como Límite inferior en las propiedades.

  • Añadir dos más etiquetas llamado Upperbund y DecimalPlaces .

  • Ahora añade tres cuadros de texto en el Formulario de usuario .

  • En esta etapa, añada a Botón de mando y ponerle un nombre Genere .

  • Ahora, doble clic el Botón de mando y ponga lo siguiente código en el editor de código .
 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 

  • Pulse F5 a ejecute el código y el Formulario de usuario tiene apareció .
  • Ponga el de bajada , superior, y el número de decimales en el Formulario de usuario y golpeó el Generar botón .

Salida En celdas A1:B10 hay 20 números aleatorios con 2 decimales en el de 1 a 30.

Más información: Cómo generar números aleatorios sin duplicados en Excel (7 maneras)

Cosas para recordar

  • También podríamos utilizar el Función fija en lugar del Función Int a generar números enteros únicos La función elimina el parte fraccionaria de un número al igual que el Función Int .

Conclusión

Ahora, sabemos cómo generar números aleatorios únicos utilizando VBA en Excel con la ayuda de ejemplos adecuados. Esperemos que le ayudará a utilizar la funcionalidad con más confianza. Cualquier pregunta o sugerencia no se olvide de ponerlos en el cuadro de comentarios a continuación.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.