
Formula generica
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Sommario
Per trovare la stringa più lunga in un intervallo con criteri, puoi utilizzare una formula di matrice basata su INDICE, CORRISPONDENZA, LUNGHEZZA e MAX. Nell'esempio mostrato, la formula in F6 è:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Dove "nomi" è l'intervallo denominato C5: C14 e "classe" è l'intervallo denominato B5: B14.
Nota: questa è una formula di matrice e deve essere inserita con CTRL + MAIUSC + INVIO.
Spiegazione
Il nucleo di questa formula è la funzione CONFRONTA, che individua la posizione della stringa più lunga utilizzando i criteri forniti:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Nota MATCH è impostato per eseguire una corrispondenza esatta fornendo zero per il tipo di corrispondenza. Per il valore di ricerca, abbiamo:
LEN(names)*(class=F5)
La funzione LEN restituisce un array di risultati (lunghezze), uno per ogni nome nell'elenco dove class = "A" dalla cella F5:
(5;6;8;6;6;0;0;0;0;0)
Questo filtra efficacemente tutta la Classe B e la funzione MAX restituisce quindi il valore più grande, 8.
Per costruire un array di ricerca, utilizziamo lo stesso approccio:
LEN(names)*(class=F5)
E ottieni lo stesso risultato:
(5;6;8;6;6;0;0;0;0;0)
Dopo l'esecuzione di LEN e MAX, abbiamo una formula MATCH con questi valori:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
CONFRONTA quindi restituisce la posizione di 8 nell'elenco, 3, che alimenta INDICE in questo modo:
=INDEX(names,3)
Infine, INDICE restituisce doverosamente il valore nella terza posizione dei nomi , che è "Jonathan".