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:A1
rango en las COUNTIF
funciones para que coincida con la celda sobre su celda inicial.
Nota: - no necesitas una columna de números aleatorios con este método