
Tengo una hoja de MS Excel con 100 nombres en una sola columna.
En otra hoja, tengo una cuadrícula de celdas de 10 x 10 a la que quiero asignar aleatoriamente un nombre de la columna.
¿Existe una manera relativamente fácil de lograr esto o implicará un trabajo de tipo VBA?
Respuesta1
Se puede hacer con una columna auxiliar que crea un número de orden aleatorio del 1 al 100. Con sus nombres en A2:A101. En B2 poner:
=AGGREGATE(15,7,ROW($1:$100)/(COUNTIFS($B$1:B1,ROW($1:$100))=0),RANDBETWEEN(1,100-COUNT($B$1:B1)))
Y cópielo.
Esto seleccionará aleatoriamente un número entre 1 y 100 con la k, en AGREGADO RANDBETWEEN(1,100-COUNT($B$1:B1))
. Mientras que COUNTIFS($B$1:B1,ROW($1:$100))=0
se asegura de que no obtengamos duplicados.
Luego usamos INDEX/MATCH para encontrar el valor. Pon esto en la esquina superior derecha de la cuadrícula:
=INDEX($A:$A,MATCH((ROW($A1)-1)*10+COLUMN(A$1),$B:$B,0))
Como es una droga de arriba a abajo, busca 1-10 en la primera fila y 11-20 en la segunda y así sucesivamente. Y dado que la columna de búsqueda es aleatoria, será aleatoria.
Luego copia sobre 10 y hacia abajo 10:
Si uno tiene Office 365 Excel, entonces INDEX/MATCH se puede reemplazar con esta versión dinámica que derramará el 10x10 automáticamente:
=INDEX(A:A,MATCH(SEQUENCE(10,10),B:B,0))
Respuesta2
Suponiendo que los nombres están almacenados en la columna A:
- En la columna B, aplique la fórmula
=RAND()
- Copie y pegue los valores resultantes en la columna B, sobrescribiendo la fórmula
- En la columna C, aplique la fórmula
=RANK(B2, $B$2:$B$101)
. Esto le permitirá asignar un número del 1 al 100 a cada nombre. - Encima de su cuadrícula de 10x10, agregue los números del 1 al 10. Haz lo mismo a la izquierda de tu cuadrícula de 10x10. Estos servirán como encabezados de filas y columnas.
Ahora, asumiendo que los encabezados de las filas están en E2:E11
y los encabezados de las columnas están en F1:O1
...
- Ingrese la fórmula
=INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0))
en la celda F2 y arrástrela a lo largo de una cuadrícula de 10x10