Macro que compruebe fecha en un rango y genere número aleatorio en otra columna
publicado
Estimados amigos, acudo a ustedes solicitando por favor su ayuda con una macro, la cual necesito que compruebe la fecha de nacimiento y genere un número aleatorio que no se repita ni en próximas generaciones de aleatorios hasta que se agoten los números y vuelva nuevamente el ciclo, es decir:
Que compruebe en el rango (“C6:C20”) la fecha de nacimiento y si:
=< 30 años genere en la columna (“A”) un número aleatorio del 1 al 100 que no se repita
=>31 hasta los 40 genere en la columna (“A”) un número aleatorio del 101 al 200 que no se repita
Y mayores de 40 genere en la columna (“A”) un número aleatorio del 201 al 300 que no se repita
Una vez que no haya más números que coger que vuelva el ciclo
Tengo una macro que me genera los aleatorios y funciona perfectamente pero no se como hacer que me genere con condición:
Sub AleatoriosNoRepetidos()
Dim i As Integer
'generamos la coleccion
Set unicos = New Collection
x = 1 'núm inicial del rango de valores
y = 300 'núm final del rango de valores
Z = 10 'numero de elementos no repetidos que queremos
'Inicializamos el generador de números aleatorios
Randomize
'loop hasta conseguir Z elementos de la Collection (20 elementos)
Do Until unicos.Count = Z
'generamos nuevos aleatorios entre x e y (entre 1 y 100)
ale = Int((y - x + 1) * Rnd + x)
'cuando encuentre un item repetido, daría un error
'que salvamos con la instrucción On Error Resume Next
On Error Resume Next
'por tanto, nuestra coleccion solo agrega elementos no repetidos
'objeto.Add item, key, before, after
'ocurre un error si una key especificada duplica la key de un miembro existente de la colección
unicos.Add ale, CStr(ale)
On Error GoTo 0
Loop
'escribir los datos unicos en la Hoja de cálculo
For i = 1 To unicos.Count
Sheets("Bitacora").Range("D6").Offset(i - 1, 0).value = unicos(i)
Next i
End Sub[/CODE]
Muchas gracias por su ayuda.
Saludos.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Estimados amigos, acudo a ustedes solicitando por favor su ayuda con una macro, la cual necesito que compruebe la fecha de nacimiento y genere un número aleatorio que no se repita ni en próximas generaciones de aleatorios hasta que se agoten los números y vuelva nuevamente el ciclo, es decir:
Que compruebe en el rango (“C6:C20”) la fecha de nacimiento y si:
=< 30 años genere en la columna (“A”) un número aleatorio del 1 al 100 que no se repita
=>31 hasta los 40 genere en la columna (“A”) un número aleatorio del 101 al 200 que no se repita
Y mayores de 40 genere en la columna (“A”) un número aleatorio del 201 al 300 que no se repita
Una vez que no haya más números que coger que vuelva el ciclo
Tengo una macro que me genera los aleatorios y funciona perfectamente pero no se como hacer que me genere con condición:
Muchas gracias por su ayuda.
Saludos.