Formula Excel: trova la stringa più lunga con criteri -

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".

Articoli interessanti...