Formula di Excel: estrai più corrispondenze in righe separate -

Sommario

Per estrarre più corrispondenze in celle separate, in righe separate, puoi utilizzare una formula di matrice basata su INDICE e PICCOLO. Nell'esempio mostrato, la formula in E5 è:

(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))

Questa è una formula di matrice e deve essere inserita con Ctrl + Maiusc + Invio.

Dopo aver inserito la formula nella prima cella, trascinala verso il basso e attraverso per riempire le altre celle.

Spiegazione

Nota: questa formula utilizza due intervalli denominati: "nomi" si riferisce a C4: C11 e "gruppi" si riferisce a B4: B11. Questi nomi sono definiti anche nella schermata sopra.

L'essenza di questa formula è questa: stiamo usando la funzione SMALL per ottenere un numero di riga che corrisponde a una "n-esima corrispondenza". Una volta ottenuto il numero di riga, lo passiamo semplicemente alla funzione della funzione INDICE, che restituisce il valore in quella riga.

Il trucco è che SMALL sta lavorando con un array costruito dinamicamente da IF in questo bit:

IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)

Questo frammento verifica i "gruppi" di intervalli denominati per il valore in E4. Se trovato, restituisce un numero di riga "normalizzato" da un array di numeri di riga creato con questa parte della formula:

ROW(names)-MIN(ROW(names))+1

Il risultato è un array che contiene i numeri di riga in cui è presente una corrispondenza e FALSE in caso contrario. L'array ha un aspetto simile a questo:

(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)

Questo array va in SMALL. Il valore k per SMALL (nth) deriva da un intervallo in espansione:

ROWS($E$5:E5)

Quando viene copiato nella tabella dei risultati, l'intervallo si espande, provocando l'incremento di k (nth). La funzione SMALL restituisce ogni numero di riga corrispondente, fornito alla funzione INDEX come row_num, con l'intervallo denominato "nomi" come matrice.

Gestione degli errori

Quando ROWS restituisce un valore per k che non esiste, SMALL genera un errore #NUM. Ciò accade dopo che si sono verificate tutte le corrispondenze. Per eliminare l'errore, utilizziamo SE.ERRORE per rilevare l'errore e restituire una stringa vuota ("").

Articoli interessanti...