Hojas de cálculo en Excel - página principal

Número aleatorio con efecto máquina tragaperras

El título de este artículo, puede no quedar muy claro en un primer momento, pero ya veréis a qué me refiero con eso de "efecto máquina tragaperras".

Antes, vamos a explicar como generar un número aleatorio. para ello tan solo tenemos que usar un par de líneas:


'Llamamos a la instrucción Randomize
'para que los aleatorios funcionen correctamente

Randomize
'ahora llamamos a la función Rnd, y generaremos
'en A1 un número aleatorio entre 0 y 100

Range("A1") = Int(100 * Rnd)

Si queremos que nos genere un número aleatorio entre 1 y 100, solo tendremos que añadir un + 1, de la siguiente forma:

'Llamamos a la instrucción Randomize
'para que los aleatorios funcionen correctamente

Randomize
'ahora llamamos a la función Rnd, y generaremos
'en A1 un número aleatorio entre 1 y 100

Range("A1") = Int(100 * Rnd + 1)

Si queremos generar un número aleatorio entre dos números dados, el código sería este:

'Llamamos a la instrucción Randomize
'para que los aleatorios funcionen correctamente

Randomize
'ahora llamamos a la función Rnd, y generaremos
'en A1 un número aleatorio entre dos números dados

Range("A1") = Int((numero_maximo - numero_minimo + 1) * Rnd + numero_minimo)

Donde numero_maximo es el número más alto que queremos que salga, y numero_minimo es la cifra más pequeña que queremos obtener.

Ahora ya estamos en condiciones de montar nuestro número aleatorio, con efecto máquina tragaperras, para lo cual, generaremos un bucle con la instrucción do while:

Sub efecto_maquina_tragaperras()
'Aquí pondremos la cifra máxima
'que saldrá en pantalla (nunca obtendremos
'un número mayor a ese)

numero_maximo = 10
'Ahora pondremos el número de veces que se
'recalculará el número aleatorio y que nos
'dará ese efecto de máquina tragaperras

iteraciones = 5000
'creamos el bucle para que haga tantas iteaciones
'como hemos informado en la línea anterior

Do While i < iteraciones
i = i + 1
'generamos un número entre 1 y el número
'máximo que hemos informado anteriormente

numero = Int(numero_maximo * Rnd + 1)
'ponemos el número aleatorio en
'la celda donde estemos situados

ActiveCell = numero
Loop
End Sub



3 comentarios:

Anónimo dijo...

Es bueno el aporte, y tengo una pregunta. Si quisiera hacer que ese efecto lo hagan 4 celdas al mismo tiempo como podria ser?

Anónimo dijo...

FELICIDADES POR MAGNIFICO BLOG

Por cuestiones de pagos de impuestos requiero una macro donde al digitar una cifra cualquiera me las redondee a miles de pesos (tres ceros), y si excede de 501 pase a las superior escala de los miles o en su defecto a la escala inferior .
Lo mismo que en su respectivo formato. (25.000, 34.000), Nuchas gracias - Javier Marco.

Anónimo dijo...

Hola tengo un excel que genera aleatoriamente el dorsal de 8 nombres, pero cada vez que introduzco un valor o F9 me cambia el orden de los nombres. Como puedo fijar la fila de los nombres generados o que me genere un numero de veces la funcion aleatoria.