Resumen
Para extraer múltiples coincidencias en celdas separadas, en columnas separadas, puede usar una fórmula de matriz basada en INDICE y SMALL. En el ejemplo que se muestra, la fórmula en F5 es:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($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 C5: C11 y "grupos" se refiere a B5: 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 generar un número de fila correspondiente 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=$E5,ROW(names)-MIN(ROW(names))+1)
Este fragmento prueba los "grupos" de rango con nombre para el valor en E5. Si se encuentra, devuelve un número de fila de una matriz de números de fila relativos creados con:
ROW(names)-MIN(ROW(names))+1
El resultado final es una matriz que contiene números donde hay una coincidencia y FALSO donde no:
(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:
COLUMNS($E$5:E5)
Cuando se copia en la tabla de resultados, el rango se expande, lo que hace que k (nth) se incremente. 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 COLUMNS devuelve un valor de 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, ajustamos la fórmula en la función SI.ERROR para detectar errores y devolver una cadena vacía ("").