Ejercicio resuelto – Generar nombres aleatorios

A partir del enunciado del Ejercicio: Generar Nombres Aleatorios hemos resuelto de la siguiente manera.

La lógica

En ocasiones, lo más importante en VBA es pensar cómo vamos a plantear nuestro ejercicio y qué restricciones tenemos. En el caso de este ejercicio nuestro esquema mental ha sido:

  • Para crear 200 elementos usamos un bucle de repetición (bucle for de 1 a 200)
  • Para que no se repitan los elementos primero generamos cada nombre y comprobamos si existe con una función. (bucle do while)
  • Si el nombre existe volvemos a generar un nombre. (función randbetween)

Resultado

Función principal (macro principal):

Sub Crear_Nombres()

Application.ScreenUpdating = False

Set nombres = Sheets("nombres")
Set listas = Sheets("listas")

Num_Nombre = InputBox("Número de nombresque se quieren crear")

For i = 1 To Num_Nombre

es_repetido = False

Do
N = WorksheetFunction.RandBetween(1, 22)
A1 = WorksheetFunction.RandBetween(1, 22)

Nuevo_Nombre = listas.Cells(N, 1) & " " & listas.Cells(A1, 2)

es_repetido = DUPLICADOS(i, Nuevo_Nombre)

If es_repetido = False Then nombres.Cells(i, 1) = Nuevo_Nombre

Loop While es_repetido = True
Next

nombres.Activate
End Sub

Auxiliarmente hemos definido una función (UDF) que nos permita evaluar si el nombre generado ya existe o no. La función es la siguiente:

Public Function DUPLICADOS(fila As Integer, Nombre As String) As Boolean

For j = 1 To fila
If nombres.Cells(j, 1) = Nombre Then
DUPLICADOS = True
Else
DUPLICADOS = False
End If
Next

End Function

Ejercicio Resuelto

En el siguiente enlace puedes encontrar el ejercicio resuelto.

Generador de nombres

Quique es un fanático del Excel desde que empezó a trabajar con ello hace unos pocos años. Adquirió su conocimiento a través de Google y de infinitas pruebas y más pruebas. Además, Quique es un entusiasta de su familia (mujer e hijos), del deporte y de la cerveza… no dudes en contactar con él para cualquier duda que tengas.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies
Shares
Share This

Comparte este post

Comparte si te resulta útil la información.