
Fórmula genérica
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Resumen
Para encontrar la cadena más larga en un rango con criterios, puede usar una fórmula de matriz basada en INDICE, MATCH, LEN y MAX. En el ejemplo que se muestra, la fórmula en F6 es:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Donde "nombres" es el rango con nombre C5: C14 y "clase" es el rango con nombre B5: B14.
Nota: esta es una fórmula de matriz y debe ingresarse con control + shift + enter.
Explicación
El núcleo de esta fórmula es la función COINCIDIR, que ubica la posición de la cadena más larga utilizando los criterios proporcionados:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Nota MATCH está configurado para realizar una coincidencia exacta proporcionando cero para el tipo de coincidencia. Por valor de búsqueda, tenemos:
LEN(names)*(class=F5)
La función LEN devuelve una matriz de resultados (longitudes), uno para cada nombre en la lista donde class = "A" de la celda F5:
(5;6;8;6;6;0;0;0;0;0)
Esto filtra efectivamente toda la Clase B, y la función MAX luego devuelve el valor más grande, 8.
Para construir una matriz de búsqueda, usamos el mismo enfoque:
LEN(names)*(class=F5)
Y obtén el mismo resultado:
(5;6;8;6;6;0;0;0;0;0)
Después de ejecutar LEN y MAX, tenemos una fórmula COINCIDIR con estos valores:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
COINCIDIR luego devuelve la posición de 8 en la lista, 3, que se alimenta de ÍNDICE de esta manera:
=INDEX(names,3)
Finalmente, INDEX devuelve diligentemente el valor en la tercera posición de los nombres , que es "Jonathan".