lunes, 27 de julio de 2009

Simulador para el cálculo de Lotería Primitiva

Navegando -por internet -me encontre. con un blog sobre -excel que a mi juicio -adolecía un poco de abusar de Visual Basic. En mi opinión Visual Basic puede potenciar las posibilidades de excel y hacer cosas que excel no permite, pero hay muchos casos en los que las fórmulas de excel son más eficientes.
.
Como ejemplo, en dicho blog se ofrecía un calculador de loterías primitivas en Visual Basic. El programa contenía un número bastante grande de líneas de código. Como alternativa al código propongo una alternativa a mi juicio bastante más rápida y simple.
.
Procedimiento:
Llamamos a la pestaña 1 de excel "Cálculos"
Celda A1, =ENTERO(ALEATORIO()*49)+1. Arrastramos esta fórmula unas cuantas filas (pongamos que hasta la fila 20 aunque no hace falta tanto). Con esto generamos una serie de números aleatorios del 1 al 49.
Celda C1, =ENTERO(ALEATORIO()*9)+1. Con esto generamos un número aleatorio del 1 al 9 para el reintegro.
.
Lamamos a la pestaña 2 "Simulador"
Grabamos aquí una macro que haga lo siguiente:
Hace doble click en A1 de Cálculos y ejecuta Enter. (con esto obtenemos nuevos números aleatorios)
Copia la columna A de Cálculos y la pegamos en valor en la columna B
Si tenemos excel 2007, seleccionamos la columna B y ejecutamos (Datos / Eliminar coincidentes)
Con esto tenemos suficientes números aleatorios no repetidos para nuestra primitiva.
Terminamos la macro.
En la pestaña Simulador insertamos un botón de comando con el nombre Generar Primitiva, al que le asignamos la macro que acabo de explicar.
Finalmente, hacemos una carátula en la pestaña Simulador en la que aparezcan los 6 números, el complementario y el reintegro, Vinculamos los 6 números y el complementario a las celdas B1, B2, B3, B4, B5, B6, B7 de la hoja Cálculos y el reintegro a la celda C1.
Fin.
.
En hacer esto se tardan 3 minutos, Pensé que podría ser interesante compartirlo con vosotros. No obstante estoy seguro de que puede hacerse de otras formas. Si se os ocurre alguna mejor POR FAVOR SENTIROS LIBRES DE EXPONERLA!!.