Nombres aleatorios sin repetir en excel

Tengo un número de equipos y quisiera hacer un sorteo para emparejarlos, para crear eliminatorias. Ahora, tengo una columna A con tantos números como equipos hay, y otra B con el nombre de los equipos. La fórmula que uso ahora es BUSCAR(ALEATORIO.ENTRE(mín,máx);rango_núm_col_A;rango_nombres_col_B). Esto me escoge aleatoriamente un nombre de equipo (según el número de la primera columna) pero me gustaría que a medida que escogiera un nombre se borrara de la lista de los que faltan por salir, o al menos, que no repitiera un nombre que ya ha salido.

Ahora, lo estoy "arreglando", quitando yo mismo los nombres que van saliendo y usando una pequeña macro (grabada desde excel) que me borra las celdas en blanco que quedan en el rango de los nombres y me desplaza el resto de nombres hacia arriba; pero esto provoca que a medida que quedan pocos nombres, el resultado de aleatorio empieza a dar "0" en vez de alguno de los nombres de los equipos que quedan.

Si alguien puede ayudarme...

1 Respuesta

Respuesta
2

Usando ALEATORIO() y JERARQUIA() creo que es posible conseguirlo. He subido un pequeño ejemplo a http://www.jrgc.es/ejemplos/ejemplo_20120702a.xls

Ten en cuenta que cada vez que se produzca un recálculo cambiarán las eliminatorias, así que tendrás que copiarlas y hacer un pegado especial de los valores.

Gracias por la respuesta. ¿Habría alguna forma a través de una macro para que se copie el resultado de la fórmula (los valores)? Es decir, que yo inserte un botón (al que le asigne una macro) y cuando lo pinche, se haga el sorteo aleatorio de equipos y se quede fijo sin que cada vez que use el teclado o ratón, cambien los partidos. Sé que puedo desactivar la opción de calcular la hoja pero no me interesa porque la uso para otros datos.

He probado grabando la macro con range.select y selection.copy pero no me acaba de cuadrar.

Y preguntarte también si con esta fórmula, me aseguro que no se repita ningún equipo. Es que hay eliminatorias de 40 partidos y como que es un poco trabajoso comprobar uno por uno si están repetidos :)

Por ejemplo, para copiar el rango C1:C24 y pegar sus valores a partir de E1:

Sub prueba()
 Application.Calculation = xlCalculationManual
 With Worksheets("Hoja1")
 .[C1:C24].Copy
 .[E1].Select
 Selection.PasteSpecial Paste:=xlPasteValues
 End With
 Application.CutCopyMode = False
 Application.Calculation = xlCalculationAutomatic
End Sub

Respecto a que pueda haber duplicados, es muy difícil pero no imposible. Los números que devuelve ALEATORIO() son decimales de hasta 15 dígitos, así que para, por ejemplo, 20 equipos, la posibilidad de que haya un duplicado es más o menos como acertar un resultado entre 50 billones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas