Formula Excel: ricerca della corrispondenza esatta con INDICE e CONFRONTA -

Sommario

Formula generica

(=INDEX(data,MATCH(TRUE,EXACT(val,lookup_col),0),col_num))

Sommario

Ricerca case-sensitive

Per impostazione predefinita, le ricerche standard con CERCA.VERT o INDICE + CORRISPONDENZA non fanno distinzione tra maiuscole e minuscole. Sia CERCA.VERT che CORRISPONDENZA restituiranno semplicemente la prima corrispondenza, ignorando le maiuscole e le minuscole.

Tuttavia, se è necessario eseguire una ricerca con distinzione tra maiuscole e minuscole, è possibile farlo con una formula di matrice che utilizza INDICE, CONFRONTA e la funzione ESATTA.

Nell'esempio, stiamo usando la seguente formula

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

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

Spiegazione

Poiché MATCH da solo non fa distinzione tra maiuscole e minuscole, abbiamo bisogno di un modo per ottenere Excel per confrontare maiuscole e minuscole. La funzione ESATTO è la funzione perfetta per questo, ma il modo in cui la usiamo è un po 'insolito, perché dobbiamo confrontare una cella con un intervallo di celle.

Lavorando dall'interno verso l'esterno, abbiamo prima:

EXACT(F4,B3:B102)

dove F4 contiene il valore di ricerca e B3: B102 è un riferimento alla colonna di ricerca (nomi). Poiché stiamo dando EXACT un array come secondo argomento, otterremo un array di valori TRUE falsi come questo:

(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, ecc.)

Questo è il risultato del confronto del valore in B4 di ogni cella nella colonna di ricerca. Ovunque vediamo TRUE, sappiamo di avere una corrispondenza esatta che rispetta il caso.

Ora dobbiamo ottenere la posizione (cioè il numero di riga) del valore TRUE in questo array. Per questo, possiamo usare MATCH, cercando TRUE e impostato in modalità di corrispondenza esatta:

MATCH(TRUE,EXACT(F4,B3:B102),0)

È importante notare che MATCH restituirà sempre la prima corrispondenza se sono presenti duplicati, quindi se dovesse esserci un'altra corrispondenza esatta nella colonna, abbinerai solo la prima.

Ora abbiamo un numero di riga. Successivamente, dobbiamo solo usare INDICE per recuperare il valore all'intersezione di riga e colonna a destra. Il numero di colonna in questo caso è hardcoded come 3, poiché i dati dell'intervallo denominato includono tutte le colonne. La formula finale è:

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

Dobbiamo inserire questa formula come formula di matrice a causa della matrice creata da EXACT.

Questa formula recupererà sia il testo che i valori numerici. Se vuoi recuperare solo numeri, puoi usare una formula basata su SUMPRODUCT; vedere il collegamento sotto

Articoli interessanti...