¡Bingo! Un generador de números hecho en OpenOffice Calc

Un colega preguntó en la lista de gleducar por un programa libre (con licencia libre, no simplemente gratuito), para generar los números del bingo.

Yo pensé en crear los números al azar con la función aleatorio() en calc, pero tenía el problema de cómo saber si los números ya salieron anteriormente. Como no encontré manera de agregar excepciones, algo que dijera “generar números al azar excepto los de esta lista”, no pude generar la aplicación mediante simples funciones (exceptuando la “trampita” de poner muchos if anidados, pero tiene un gran margen de error… salvo que se creen tantos if anidados como celdas preceden a la que estamos escribiendo, terminando con una celda que tenga 99 condicionales…).

Entonces busqué en Google una macro para OpenOffice Calc, donde se utilice la estructura while (mientras…), como para que el sistema realice esta estructura:

“mientras el número que salga en el sorteo no sea diferente a todos los anteriores, continuar sorteando números”.

Encontré este post que, casualmente, está realizado para un lotto (o bingo, no?)

Descargué el archivo de la página y entré al menú Macros, buscando la macro para editar su código:

Macros en OpenOffice Calc

Para que funcione tuve que copiar el código y pegarlo en una nueva macro (yendo a Mis Macros / Standard / Module 1 y eligiendo el botón Editar).

Modifiqué dos valores: donde decía 49 puse 99, dos veces.

Sub Lotto
Dim i
Dim j
Dim val
Dim match
oSheet = ThisComponent.Sheets(1)
For i = 1 To 99
oCell = oSheet.getCellByPosition(1,i)
Do
match = False
   val = int(rnd()*99) + 1
For j = 1 To i
If val = oSheet.getCellByPosition(1,j).getValue() Then
match = True
End If
Next j
Loop Until (match = False)
oCell.setValue(val)
Next i
End Sub

Después probé ejecutar la macro y efectivamente puso 100 números al azar en la columna B.

Lo siguiente es muy sencillo: en la columna C le puse una fórmula que mostrar los valores de la columna B sólo si había algo en la columna A:

=SI(A2<>””;B2;” “)

Oculté la columna B, y entonces, cada vez que uno escribe algo (por ejemplo una equis, un asterisco, cualquier cosa) en la columna A, se muestra un número en la columna C. Hay que ir escribiendo desde A2 hacia abajo:

Bingo terminado

Aquí les dejo el archivo, para usarlo tal cual viene, o para modificarlo a piaccere: bingo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *