Resumen
Para extraer múltiples coincidencias en celdas separadas, en filas separadas, puede usar una fórmula de matriz basada en INDICE y SMALL. En el ejemplo que se muestra, la fórmula en E5 es:
(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))
Esta es una fórmula de matriz y debe ingresarse con Control + Shift + Enter.
Después de ingresar la fórmula en la primera celda, arrástrela hacia abajo y a lo ancho para completar las otras celdas.
Explicación
Nota: esta fórmula utiliza dos rangos con nombre: "nombres" se refiere a C4: C11 y "grupos" se refiere a B4: B11. Estos nombres también se definen en la captura de pantalla anterior.
La esencia de esta fórmula es la siguiente: estamos usando la función PEQUEÑO para obtener un número de fila que corresponda a una "enésima coincidencia". Una vez que tenemos el número de fila, simplemente lo pasamos a la función de la función INDICE, que devuelve el valor en esa fila.
El truco es que SMALL está trabajando con una matriz construida dinámicamente por IF en este bit:
IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)
Este fragmento prueba los "grupos" de rango con nombre para el valor en E4. Si se encuentra, devuelve un número de fila "normalizado" de una matriz de números de fila creada con esta parte de la fórmula:
ROW(names)-MIN(ROW(names))+1
El resultado es una matriz que contiene números de fila donde hay una coincidencia y FALSE donde no. La matriz se parece a esto:
(1; FALSO; FALSO; FALSO; FALSO; 6; FALSO)
Esta matriz entra en PEQUEÑO. El valor k de SMALL (nth) proviene de un rango en expansión:
ROWS($E$5:E5)
Cuando se copia en la tabla de resultados, el rango se expande, lo que hace que k (nth) aumente. La función PEQUEÑA devuelve cada número de fila coincidente, que se proporciona a la función INDICE como número_fila, con el rango denominado "nombres" como matriz.
Manejo de errores
Cuando ROWS devuelve un valor para k que no existe, SMALL arroja un error #NUM. Esto sucede después de que se hayan producido todos los partidos. Para suprimir el error, usamos IFERROR para detectar el error y devolver una cadena vacía ("").