Excel: selección aleatoria dentro de la tabla que cumple dos criterios

Excel: selección aleatoria dentro de la tabla que cumple dos criterios

Aquí hay un ejemplo de mis datos:

Name:        Office:   Years:

John Smith   Canada      1

Bob Smith    Canada      1

Jake Smith   Canada      1

Sarah Smith  Canada      1

En otra hoja quiero generar un nombre aleatorio basado en Oficina y Años. Mientras arrastro la fórmula hacia abajo, quiero que le dé un nombre diferente cada vez (aquí es donde estoy atascado). He probado varias fórmulas y esta es la más cercana.

=INDEX($B$2:$B$436,MATCH(SMALL(IF($D$2:$D$436&$F$2:$F$436=$H$3&$I$3,$G$2:$G$436),1),$G$2:$G$436,0))

Columna B = Nombre Columna D = Oficina Columna F = Años, luego H3 e I3 son mis valores de búsqueda

la columna G es un conjunto de números aleatorios = rand()

Respuesta1

Voy a poner la aleatorización en la propia fórmula. Siempre puedes poner esto en otra columna si quieres.

La columna A es el nombre
La columna B es la oficina
La columna C es el año

Celda G2 es la oficina que te interesa
Celda G3 es el año que te interesa

=INDIRECT("A"&LARGE(IF($B$2:$B$7=G2,IF($C$2:$C$7=G3,ROW($A$2:$A$7),0),0), RANDBETWEEN(1,COUNTIFS(B:B,G2,C:C,G3))))

Esta es una fórmula matricial y debe ingresarse usando Ctrl+ Shift+ Enter.

Funciona creando una matriz que tiene los números de fila (si los criterios coinciden) o cero si no es así. Entonces se necesita elnorteº valor más grande, dondenortees un número aleatorio entre 1 y el número de filas que coinciden con los criterios.

Respuesta2

Suponiendo que desea devolver los nombres en A2 hacia abajo (donde A1 es un encabezado o un espacio en blanco), utilice esta fórmula matricial en A2

=INDEX($B$2:$B$436,SMALL(IF(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0),ROW($B$2:$B$436)-ROW($B$2)+1),RANDBETWEEN(1,SUM(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0)))))

confirme con CTRL+ SHIFT+ CTRLy copie hacia abajo: cambie el A$1:A1rango en las COUNTIFfunciones para que coincida con la celda sobre su celda inicial.

Nota: - no necesitas una columna de números aleatorios con este método

información relacionada