Macro para generar aleatorios

23/09/2003 - 21:32 por Ing. Héctor Montero S. | Informe spam
Hice un archivo en Excel con la siguiente función
=IF(RANDBETWEEN(1;5)=1;"HX";IF(RANDBETWEEN(1;5)=2;"TF";IF(RANDBETWEEN(1;5)=3
;"JR";IF(RANDBETWEEN(1;5)=4;"UY";IF(RANDBETWEEN(1;5)=5;"WQ";"DR")))))&RANDBE
TWEEN(20;99)&RANDBETWEEN(75;99)&IF(RANDBETWEEN(6;10)=6;"BC";IF(RANDBETWEEN(6
;10)=7;"PY";IF(RANDBETWEEN(6;10)=8;"ZT";IF(RANDBETWEEN(6;10)=9;"HE";IF(RANDB
ETWEEN(6;10);"LW";"MS")))))&RANDBETWEEN(100;999)&RANDBETWEEN(10;99)
TF7982BC42931

El objetivo es generar valores alfanumericos, sin embargo existen muchas
limitaciones y la mayor es quiz[as que se necesita generar 21000 celdas
random, por lo que el archivo queda de unos 12MB.

Quisiera saber si se puede generar un código que me llene desde A2 Hasta
21001 un código alfanumérico de forma que sean 2 letras, 3 numeros, 2 letras
4 numeros, en forma aleatoria, EJEMPLO: TF7982BC42931.

Y que cada vez que se necesite genere el random y vuelva a generar números
aleatorios en el mismo lugar, y que adicionalmente todo quede ordenado en
forma ascendente.
Gracias a todos y todas por la colaboración tan valiosa que prestan.
HMS
 

Leer las respuestas

#1 Fernando Arroyo
23/09/2003 - 22:12 | Informe spam
Prueba con:

Sub GenerarAleatorios()
Dim lngFila As Long
Dim strC As String

lngFila = 3

While lngFila <= 21001
strC = Chr(Int((90 - 65 + 1) * Rnd + 65))
strC = strC & Chr(Int((90 - 65 + 1) * Rnd + 65))
strC = strC & Right("000" & Int((999 - 0 + 1) * Rnd + 0), 3)
strC = strC & Chr(Int((90 - 65 + 1) * Rnd + 65))
strC = strC & Chr(Int((90 - 65 + 1) * Rnd + 65))
strC = strC & Right("0000" & Int((999 - 0 + 1) * Rnd + 0), 4)

Worksheets("Hoja1").Cells(lngFila, 1) = strC

strC = ""
lngFila = lngFila + 1
Wend
End Sub

Tarda unos 6 segundos en un P4 a 2 Gh., y el libro "pesa" aproximadamente 1,1 Mbs.
Un saludo


Fernando Arroyo
MS MVP - Excel

PS: He supuesto que no quieres que aparezca la ñ...

"Ing. Héctor Montero S." escribió en el mensaje news:
Hice un archivo en Excel con la siguiente función
=IF(RANDBETWEEN(1;5)=1;"HX";IF(RANDBETWEEN(1;5)=2;"TF";IF(RANDBETWEEN(1;5)=3
;"JR";IF(RANDBETWEEN(1;5)=4;"UY";IF(RANDBETWEEN(1;5)=5;"WQ";"DR")))))&RANDBE
TWEEN(20;99)&RANDBETWEEN(75;99)&IF(RANDBETWEEN(6;10)=6;"BC";IF(RANDBETWEEN(6
;10)=7;"PY";IF(RANDBETWEEN(6;10)=8;"ZT";IF(RANDBETWEEN(6;10)=9;"HE";IF(RANDB
ETWEEN(6;10);"LW";"MS")))))&RANDBETWEEN(100;999)&RANDBETWEEN(10;99)
TF7982BC42931

El objetivo es generar valores alfanumericos, sin embargo existen muchas
limitaciones y la mayor es quiz[as que se necesita generar 21000 celdas
random, por lo que el archivo queda de unos 12MB.

Quisiera saber si se puede generar un código que me llene desde A2 Hasta
21001 un código alfanumérico de forma que sean 2 letras, 3 numeros, 2 letras
4 numeros, en forma aleatoria, EJEMPLO: TF7982BC42931.

Y que cada vez que se necesite genere el random y vuelva a generar números
aleatorios en el mismo lugar, y que adicionalmente todo quede ordenado en
forma ascendente.
Gracias a todos y todas por la colaboración tan valiosa que prestan.
HMS




Preguntas similares