Formula di Excel: ottieni l'ennesima corrispondenza -

Sommario

Formula generica

=SMALL(IF(logical,ROW(list)-MIN(ROW(list))+1),n)

Sommario

Per ottenere la posizione dell'ennesima corrispondenza (ad esempio, il 2 ° valore di corrispondenza, il 3 ° valore di corrispondenza, ecc.), È possibile utilizzare una formula basata sulla funzione PICCOLO. Nell'esempio mostrato, la formula in G5 è:

=SMALL(IF(list=E5,ROW(list)-MIN(ROW(list))+1),F5)

Questa formula restituisce la posizione della seconda occorrenza di "rosso" nell'elenco.

Nota: questa è una formula di matrice e deve essere inserita con CTRL + MAIUSC + INVIO.

Spiegazione

Questa formula utilizza l'intervallo denominato "elenco" che è l'intervallo B5: B11.

Il nucleo di questa formula è la funzione SMALL, che restituisce semplicemente l'ennesimo valore più piccolo in un elenco di valori che corrispondono ai numeri di riga. I numeri di riga sono stati "filtrati" dall'istruzione IF, che applica la logica per una corrispondenza. Lavorando dall'interno verso l'esterno, IF confronta tutti i valori nell'intervallo denominato "elenco" con il valore in B5, che crea un array come questo:

(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE)

Il "valore se vero" è un insieme di numeri di riga relativi creati da questo codice:

ROW(list)-MIN(ROW(list))+1

Il risultato è un array come questo:

(1;2;3;4;5;6;7)

Vedi questa pagina per una spiegazione completa.

Con un test logico che restituisce un array di risultati, la funzione IF agisce da filtro: sopravvivono solo i numeri di riga che corrispondono a una corrispondenza, il resto restituisce FALSE. Il risultato restituito da IF è simile a questo:

(1;FALSE;FALSE;FALSE;5;FALSE;7)

I numeri 1, 5 e 7 corrispondono alla posizione del "rosso" nell'elenco.

Infine, SMALL restituisce l'ennesimo elemento più piccolo in questo elenco, ignorando i valori FALSE. Nell'esempio, F5 contiene 2, quindi SMALL restituisce il 2 ° valore più piccolo: 5.

Ottieni valore associato

Una volta ottenuta la posizione relativa dell'ennesima corrispondenza, è possibile utilizzare quella posizione con la funzione INDICE per restituire un valore associato.

Articoli interessanti...