Sommario
Questa esercitazione spiega come utilizzare la funzione MATCH in Excel con esempi di formule e mostra come migliorare le formule di ricerca creando formule dinamiche con VLOOKUP e MATCH.
In Microsoft Excel esistono diverse funzioni di ricerca/riferimento che possono aiutare a trovare un determinato valore in un intervallo di celle, e MATCH è una di queste. In pratica, identifica la posizione relativa di un elemento in un intervallo di celle. Tuttavia, la funzione MATCH può fare molto di più della sua pura essenza.
Funzione MATCH di Excel: sintassi e usi
La funzione MATCH di Excel cerca un valore specificato in un intervallo di celle e restituisce la posizione relativa di tale valore.
La sintassi della funzione MATCH è la seguente:
MATCH(lookup_value, lookup_array, [match_type])Valore_di_ricerca (obbligatorio) - il valore che si desidera trovare. Può essere un valore numerico, di testo o logico, nonché un riferimento di cella.
Matrice_di_ricerca (obbligatorio) - l'intervallo di celle in cui cercare.
Tipo_di_partita (opzionale) - definisce il tipo di corrispondenza. Può essere uno dei seguenti valori: 1, 0, -1. L'argomento match_type impostato a 0 restituisce solo la corrispondenza esatta, mentre gli altri due tipi consentono una corrispondenza approssimativa.
- 1 o omesso (valore predefinito) - trova il file valore più grande nell'array di lookup che è minore o uguale al valore di lookup. Richiede l'ordinamento dell'array di lookup in ordine crescente, dal più piccolo al più grande o dalla A alla Z.
- 0 - trova il primo valore della matrice che è esattamente uguale al valore di ricerca. Non è richiesto alcun ordinamento.
- -1 - trovare il valore più piccolo nell'array che è maggiore o uguale al valore di ricerca. L'array di ricerca deve essere ordinato in ordine decrescente, dal più grande al più piccolo o da Z ad A.
Per capire meglio la funzione MATCH, creiamo una semplice formula basata su questi dati: i nomi degli studenti nella colonna A e i loro punteggi d'esame nella colonna B, ordinati dal più grande al più piccolo. Per scoprire dove si trova uno specifico studente (ad esempio, Laura ), tra gli altri, utilizzano questa semplice formula:
=MATCH("Laura", A2:A8, 0)
Opzionalmente, è possibile inserire il valore di ricerca in una cella (E1 in questo esempio) e fare riferimento a tale cella nella formula di Excel Match:
=MATCH(E1, A2:A8, 0)
Come si vede nella schermata precedente, i nomi degli studenti sono inseriti in un ordine arbitrario e quindi si imposta il parametro tipo_di_partita a 0 (corrispondenza esatta), perché solo questo tipo di corrispondenza non richiede l'ordinamento dei valori nell'array di lookup. Tecnicamente, la formula di corrispondenza restituisce la posizione relativa di Laura nell'intervallo, ma poiché i punteggi sono ordinati dal più grande al più piccolo, ci dice anche che Laura ha il quinto punteggio migliore tra tutti gli studenti.
Suggerimento: in Excel 365 e Excel 2021 è possibile utilizzare la funzione XMATCH, un successore moderno e più potente di MATCH.
4 cose da sapere sulla funzione MATCH
Come si è appena visto, l'uso di MATCH in Excel è facile. Tuttavia, come nel caso di quasi tutte le altre funzioni, ci sono alcune specificità che è bene conoscere:
- La funzione MATCH restituisce il valore posizione relativa del valore di ricerca nell'array, non il valore stesso.
- MATCH è senza distinzione tra maiuscole e minuscole cioè non distingue tra caratteri minuscoli e maiuscoli quando si tratta di valori di testo.
- Se l'array di lookup contiene diverse occorrenze del valore di lookup, viene restituita la posizione del primo valore.
- Se il valore di ricerca non viene trovato nell'array di ricerca, viene restituito l'errore #N/A.
Come utilizzare MATCH in Excel - esempi di formule
Ora che conoscete gli usi di base della funzione MATCH di Excel, discutiamo alcuni altri esempi di formule che vanno oltre le nozioni di base.
Corrispondenza parziale con caratteri jolly
Come molte altre funzioni, MATCH comprende i seguenti caratteri jolly:
- Punto interrogativo (?) - sostituisce qualsiasi singolo carattere
- Asterisco (*) - sostituisce qualsiasi sequenza di caratteri
Nota: i caratteri jolly possono essere utilizzati solo in formule di corrispondenza con tipo_di_partita impostato su 0.
Una formula di corrispondenza con caratteri jolly è utile nelle situazioni in cui non si vuole corrispondere all'intera stringa di testo, ma solo ad alcuni caratteri o a una parte della stringa. Per illustrare il punto, considerate il seguente esempio.
Supponiamo di avere un elenco di rivenditori regionali e i loro dati di vendita dell'ultimo mese. Vogliamo trovare la posizione relativa di un certo rivenditore nell'elenco (ordinato in base agli importi delle vendite in ordine decrescente), ma non riusciamo a ricordare esattamente il suo nome, anche se ricordiamo alcuni caratteri iniziali.
Supponendo che i nomi dei rivenditori siano compresi nell'intervallo A2:A11 e che si cerchi il nome che inizia con "car", la formula è la seguente:
=MATCH("auto*", A2:A11,0)
Per rendere la formula Match più versatile, è possibile digitare il valore di ricerca in una cella (E1 in questo esempio) e concatenare la cella con il carattere jolly, in questo modo:
=MATCH(E1& "*", A2:A11,0)
Come mostrato nella schermata seguente, la formula restituisce 2, che è la posizione di "Carter":
Per sostituire un solo carattere nel valore di ricerca, utilizzare l'operatore jolly "?", in questo modo:
=MATCH("ba?er", A2:A11,0)
La formula precedente corrisponde al nome " Panettiere " e rieseguire la sua posizione relativa, che è 5.
Formula MATCH sensibile alle maiuscole
Come accennato all'inizio di questo tutorial, la funzione MATCH non distingue i caratteri maiuscoli da quelli minuscoli. Per creare una formula di corrispondenza sensibile alle maiuscole e alle minuscole, utilizzare MATCH in combinazione con la funzione EXACT che confronta le celle in modo esatto, compreso il caso dei caratteri.
Ecco la formula generica sensibile alle maiuscole e minuscole per abbinare i dati:
MATCH(TRUE, EXACT( array di ricerca , valore di ricerca ), 0)La formula funziona con la seguente logica:
- La funzione EXACT confronta il valore di lookup con ciascun elemento dell'array di lookup. Se le celle confrontate sono esattamente uguali, la funzione restituisce VERO, altrimenti FALSO.
- Poi, la funzione MATCH confronta TRUE (che è la sua funzione valore_di_ricerca ) con ciascun valore dell'array restituito da EXACT e restituisce la posizione della prima corrispondenza.
Tenete presente che si tratta di una formula di array che richiede la pressione di Ctrl + Shift + Invio per essere completata correttamente.
Supponendo che il valore di ricerca sia nella cella E1 e che l'array di ricerca sia A2:A9, la formula è la seguente:
=MATCH(TRUE, EXACT(A2:A9,E1),0)
La seguente schermata mostra la formula di corrispondenza tra maiuscole e minuscole in Excel:
Confrontare 2 colonne per trovare corrispondenze e differenze (ISNA MATCH)
La verifica delle corrispondenze e delle differenze tra due elenchi è una delle operazioni più comuni in Excel e può essere eseguita in vari modi. Una formula ISNA/MATCH è uno di questi:
SE(ISNA(MATCH( 1° valore in Elenco1 , Elenco2 , 0)), "Non nell'elenco 1", "")Per qualsiasi valore dell'Elenco 2 che non è presente nell'Elenco 1, la formula restituisce " Non nell'elenco 1 "Ed ecco come:
- La funzione MATCH cerca un valore dell'Elenco 1 all'interno dell'Elenco 2. Se viene trovato un valore, ne restituisce la posizione relativa, altrimenti #N/A errore.
- La funzione ISNA in Excel fa solo una cosa: controlla gli errori #N/A (cioè "non disponibile"). Se un dato valore è un errore #N/A, la funzione restituisce VERO, altrimenti FALSO. Nel nostro caso, VERO significa che un valore dell'Elenco 1 non si trova nell'Elenco 2 (cioè che MATCH restituisce un errore #N/A).
- Poiché potrebbe essere molto confuso per gli utenti vedere VERO per valori che non compaiono nell'Elenco 1, si avvolge la funzione IF intorno a ISNA per visualizzare " Non nell'elenco 1 ", o qualsiasi altro testo si desideri.
Ad esempio, per confrontare i valori della colonna B con quelli della colonna A, la formula assume la forma seguente (dove B2 è la cella più in alto):
=IF(ISNA(MATCH(B2,A:A,0)), "Non nell'elenco 1", "")
Come si ricorderà, la funzione MATCH di Excel è di per sé insensibile alle maiuscole e alle minuscole. Per fare in modo che distingua le maiuscole e le minuscole dei caratteri, inserire la funzione EXACT nel file array_di_ricerca e ricordarsi di premere Ctrl + Shift + Invio per completare l'operazione. formula dell'array :
=IF(ISNA(MATCH(TRUE, EXACT(A:A, B2),0)), "Non nell'elenco 1", "")
La seguente schermata mostra entrambe le formule in azione:
Per conoscere altri modi per confrontare due elenchi in Excel, consultate la seguente esercitazione: Come confrontare 2 colonne in Excel.
Excel VLOOKUP e MATCH
Questo esempio presuppone che abbiate già una conoscenza di base della funzione VLOOKUP di Excel e, se la conoscete, è probabile che vi siate imbattuti nelle sue numerose limitazioni (la cui panoramica dettagliata si trova in Perché VLOOKUP di Excel non funziona) e stiate cercando un'alternativa più robusta.
Uno degli inconvenienti più fastidiosi di VLOOKUP è che smette di funzionare dopo l'inserimento o l'eliminazione di una colonna all'interno di una tabella di ricerca. Questo accade perché VLOOKUP estrae un valore corrispondente in base al numero della colonna di ritorno specificata dall'utente (numero di indice). Poiché la colonna numero di indice è "codificata" nella formula, Excel non è in grado di modificarla quando una o più nuove colonne vengono aggiunte o eliminate dalla tabella.
La funzione MATCH di Excel tratta un posizione relativa di un valore di ricerca, il che lo rende perfetto per l'applicazione di col_index_num In altre parole, invece di specificare la colonna di ritorno come numero statico, si utilizza MATCH per ottenere la posizione corrente di tale colonna.
Per semplificare la comprensione, utilizziamo di nuovo la tabella con i punteggi degli esami degli studenti (simile a quella utilizzata all'inizio di questa esercitazione), ma questa volta recupereremo il punteggio reale e non la sua posizione relativa.
Supponendo che il valore di ricerca sia nella cella F1, che la matrice della tabella sia $A$1:$C$2 (è buona norma bloccarla usando riferimenti assoluti alle celle se si intende copiare la formula in altre celle), la formula è la seguente:
=VLOOKUP(F1, $A$1:$C$8, 3, FALSE)
Il terzo argomento ( col_index_num ) è impostato su 3 perché il Punteggio in matematica che vogliamo estrarre è la terza colonna della tabella. Come si può vedere nella schermata sottostante, questa formula Vlookup regolare funziona bene:
Ma solo finché non si inserisce o si elimina una o più colonne:
Allora, perché l'errore #REF!? Perché col_index_num impostato su 3 indica a Excel di ottenere un valore dalla terza colonna, mentre ora ci sono solo 2 colonne nell'array della tabella.
Per evitare che ciò accada, è possibile rendere la formula di Vlookup più dinamica includendo la seguente funzione Match:
MATCH(E2,A1:C1,0)
Dove:
- E2 è il valore di ricerca, che è esattamente uguale al nome della colonna di ritorno, cioè la colonna da cui si vuole estrarre un valore ( Punteggio in matematica in questo esempio).
- A1:C1 è la matrice di ricerca contenente le intestazioni delle tabelle.
E ora, includere questa funzione Match nel file col_index_num della formula Vlookup, in questo modo:
=VLOOKUP(F1,$A$1:$C$8, MATCH(E2,$A$1:$C$1, 0), FALSE)
E assicuratevi che funzioni in modo impeccabile, indipendentemente dal numero di colonne aggiunte o eliminate:
Nella schermata precedente, ho bloccato tutti i riferimenti di cella per far sì che la formula funzioni correttamente anche se i miei utenti la spostano in un altro punto del foglio di lavoro. Come si può vedere nella schermata seguente, la formula funziona perfettamente dopo l'eliminazione di una colonna; inoltre Excel è abbastanza intelligente da regolare correttamente i riferimenti assoluti in questo caso:
Excel HLOOKUP e MATCH
In modo analogo, è possibile utilizzare la funzione MATCH di Excel per migliorare le formule HLOOKUP. Il principio generale è essenzialmente lo stesso di Vlookup: si usa la funzione Match per ottenere la posizione relativa della colonna di ritorno e si fornisce questo numero alla funzione numero_indice_file della formula Hlookup.
Supponendo che il valore di ricerca sia nella cella B5, che la matrice della tabella sia B1:H3, che il nome della riga di ritorno (valore di ricerca per MATCH) sia nella cella A6 e che le intestazioni delle righe siano A1:A3, la formula completa è la seguente:
=HLOOKUP(B5, B1:H3, MATCH(A6, A1:A3, 0), FALSE)
Come si è appena visto, la combinazione di Hlookup/Vlookup & Match è certamente un miglioramento rispetto alle normali formule Hlookup e Vlookup. Tuttavia, la funzione MATCH non elimina tutte le loro limitazioni. In particolare, una formula Vlookup Match non può ancora guardare alla sua sinistra e Hlookup Match non riesce a cercare in nessuna riga diversa da quella più in alto.
Per superare le limitazioni di cui sopra (e alcune altre), considerate l'utilizzo di una combinazione di INDEX MATCH, che offre un modo davvero potente e versatile di effettuare ricerche in Excel, superiore a Vlookup e Hlookup sotto molti aspetti. La guida dettagliata e gli esempi di formule sono disponibili in INDEX & MATCH in Excel - un'alternativa migliore a VLOOKUP.
Questo è il modo in cui si utilizzano le formule MATCH in Excel. Spero che gli esempi discussi in questa esercitazione vi siano utili nel vostro lavoro. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!
Eserciziario da scaricare
Esempi di formula MATCH di Excel (file .xlsx)