Sommario
Questa esercitazione mostra come utilizzare INDEX e MATCH in Excel e come sia meglio di VLOOKUP.
In un paio di articoli recenti, ci siamo sforzati di spiegare le basi della funzione VLOOKUP ai principianti e di fornire esempi di formule VLOOKUP più complesse agli utenti più esperti. Ora cercherò, se non di dissuadervi dall'uso di VLOOKUP, almeno di mostrarvi un modo alternativo per eseguire una ricerca verticale in Excel.
"Perché VLOOKUP ha numerose limitazioni che possono impedire di ottenere il risultato desiderato in molte situazioni. D'altra parte, la combinazione INDEX MATCH è più flessibile e dispone di numerose caratteristiche che la rendono superiore a VLOOKUP sotto molti aspetti.
Le funzioni INDEX e MATCH di Excel - le basi
Poiché lo scopo di questa esercitazione è quello di dimostrare un modo alternativo di fare un vlookup in Excel utilizzando una combinazione di funzioni INDEX e MATCH, non ci soffermeremo molto sulla loro sintassi e sul loro utilizzo. Tratteremo solo il minimo necessario per comprendere l'idea generale e poi daremo un'occhiata approfondita agli esempi di formula che rivelano tutti i vantaggi dell'utilizzo di INDEX MATCH invece di VLOOKUP.
Funzione INDEX - Sintassi e utilizzo
La funzione INDICE di Excel restituisce un valore in una matrice in base ai numeri di riga e di colonna specificati dall'utente. La sintassi della funzione INDICE è semplice:
INDICE(array, riga_num, [colonna_num])Ecco una spiegazione molto semplice di ciascun parametro:
- array - un intervallo di celle da cui si vuole restituire un valore.
- numero_riga - il numero di riga dell'array da cui si desidera restituire un valore. Se omesso, il numero_colonna è obbligatorio.
- numero_colonna - il numero di colonna dell'array da cui si desidera restituire un valore. Se omesso, è necessario il numero_di_riga.
Per ulteriori informazioni, consultare la funzione INDICE di Excel.
Ecco un esempio della formula INDEX nella sua forma più semplice:
=INDICE(A1:C10,2,3)
La formula cerca nelle celle da A1 a C10 e restituisce il valore della cella della seconda riga e della terza colonna, ossia la cella C2.
Tuttavia, quando si lavora con i dati reali è difficile sapere quale riga e quale colonna si desidera, ed è qui che la funzione MATCH si rivela utile.
Funzione MATCH - Sintassi e utilizzo
La funzione MATCH di Excel ricerca un valore di ricerca in un intervallo di celle e restituisce il valore posizione relativa di quel valore nell'intervallo.
La sintassi della funzione MATCH è la seguente:
MATCH(lookup_value, lookup_array, [match_type])- valore_di_ricerca - il numero o il valore di testo che si sta cercando.
- array_di_ricerca - un intervallo di celle da ricercare.
- tipo_di_partita - specifica se restituire una corrispondenza esatta o la più vicina:
- 1 o omesso - trova il valore più grande che è minore o uguale al valore di ricerca. Richiede l'ordinamento dell'array di ricerca in ordine crescente.
- 0 - trova il primo valore che è esattamente uguale al valore di ricerca. Nella combinazione INDEX / MATCH, è quasi sempre necessaria una corrispondenza esatta, quindi si imposta il terzo argomento della funzione MATCH a 0.
- -1 - trova il valore più piccolo maggiore o uguale a lookup_value. Richiede l'ordinamento dell'array di lookup in ordine decrescente.
Ad esempio, se l'intervallo B1:B3 contiene i valori "New York", "Parigi", "Londra", la formula seguente restituisce il numero 3, perché "Londra" è la terza voce dell'intervallo:
=MATCH("Londra",B1:B3,0)
Per ulteriori informazioni, consultare la funzione MATCH di Excel.
A prima vista, l'utilità della funzione MATCH può sembrare discutibile: a chi interessa la posizione di un valore in un intervallo? Quello che vogliamo sapere è il valore stesso.
Ricordiamo che la posizione relativa del valore di ricerca (cioè i numeri di riga e di colonna) è esattamente ciò che occorre fornire al metodo numero_riga e numero_colonna Come ricorderete, Excel INDEX è in grado di trovare il valore alla confluenza di una determinata riga e colonna, ma non può determinare esattamente la riga e la colonna desiderate.
Come utilizzare la funzione MATCH INDEX in Excel
Ora che conoscete le nozioni di base, credo che sia già chiaro come MATCH e INDEX lavorino insieme. In poche parole, INDEX trova il valore di ricerca in base ai numeri di colonna e di riga e MATCH fornisce questi numeri. Tutto qui!
Per la ricerca verticale, si utilizza la funzione MATCH solo per determinare il numero di riga e si fornisce l'intervallo di colonne direttamente a INDEX:
INDICE ( per restituire un valore da , MATCH ( valore di ricerca , colonna da guardare in alto , 0))È forse più facile capirlo con un esempio: supponiamo di avere un elenco di capitali nazionali e della loro popolazione:
Per trovare la popolazione di una certa capitale, ad esempio la capitale del Giappone, utilizzare la seguente formula INDEX MATCH:
=INDEX(C2:C10, MATCH("Giappone", A2:A10, 0))
Analizziamo ora le funzioni di ciascun componente di questa formula:
- La funzione MATCH cerca il valore di ricerca "Giappone" nell'intervallo A2:A10 e restituisce il numero 3, perché "Giappone" è il terzo nell'array di ricerca.
- Il numero di riga va direttamente alla riga numero_riga di INDEX, che gli chiede di restituire un valore da quella riga.
Quindi, la formula di cui sopra si trasforma in un semplice INDICE(C2:C,3) che dice di cercare nelle celle da C2 a C10 e di estrarre il valore dalla terza cella di quell'intervallo, cioè C4 perché si inizia a contare dalla seconda riga.
Se non volete codificare la città nella formula, inseritela in una cella, ad esempio F1, fornite il riferimento alla cella a MATCH e otterrete una formula di ricerca dinamica:
=INDICE(C2:C10, MATCH(F1,A2:A10,0))
Nota importante! Il numero di righe nel file array L'argomento di INDEX deve corrispondere al numero di righe presenti nel file array_di_ricerca di MATCH, altrimenti la formula produrrà un risultato errato.
Aspettate, aspettate... perché non usare semplicemente la seguente formula di Vlookup? Che senso ha perdere tempo a cercare di capire gli arcani di Excel MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
Questo semplice esempio è solo a scopo dimostrativo, per farvi capire come le funzioni INDEX e MATCH lavorano insieme. Gli altri esempi che seguiranno vi mostreranno la vera potenza di questa combinazione, che permette di affrontare facilmente molti scenari complessi quando VLOOKUP è in difficoltà.
Suggerimenti:
- In Excel 365 e Excel 2021, è possibile utilizzare una formula più moderna INDEX XMATCH.
- Per Google Sheets, vedere gli esempi di formula con INDEX MATCH in questo articolo.
PARTITA INDICE vs. VLOOKUP
Quando si tratta di decidere quale funzione utilizzare per le ricerche verticali, la maggior parte dei guru di Excel concorda sul fatto che INDEX MATCH è di gran lunga migliore di VLOOKUP. Tuttavia, molte persone continuano a scegliere VLOOKUP, in primo luogo perché è più semplice e, in secondo luogo, perché non comprendono appieno tutti i vantaggi dell'utilizzo della formula INDEX MATCH in Excel. Senza questa comprensione, nessuno è disposto a investire il proprio tempo per imparare una formula più complessa.sintassi.
Di seguito, vi illustrerò i principali vantaggi di MATCH INDEX rispetto a VLOOKUP, in modo che possiate decidere se è una valida aggiunta al vostro arsenale di Excel.
4 motivi principali per utilizzare INDEX MATCH invece di VLOOKUP
- Ricerca da destra a sinistra. Come ogni utente esperto sa, VLOOKUP non può guardare alla sua sinistra, il che significa che il valore di ricerca deve sempre risiedere nella colonna più a sinistra della tabella. INDEX MATCH può eseguire la ricerca a sinistra con facilità! L'esempio seguente lo mostra in azione: Come cercare un valore a sinistra in Excel.
- Inserire o eliminare colonne in modo sicuro. Le formule VLOOKUP si interrompono o forniscono risultati errati quando una nuova colonna viene eliminata o aggiunta a una tabella di ricerca, perché la sintassi di VLOOKUP richiede di specificare il numero di indice della colonna da cui si desidera estrarre i dati. Naturalmente, quando si aggiungono o eliminano colonne, il numero di indice cambia.
Con INDEX MATCH, si specifica l'intervallo di colonne di ritorno, non un numero di indice. Di conseguenza, si è liberi di inserire e rimuovere tutte le colonne che si desidera senza preoccuparsi di aggiornare ogni formula associata.
- Nessun limite per le dimensioni di un valore di ricerca. Quando si utilizza la funzione VLOOKUP, la lunghezza totale dei criteri di ricerca non può superare i 255 caratteri, altrimenti si verifica l'errore #VALORE! Pertanto, se il dataset contiene stringhe lunghe, l'unica soluzione possibile è INDEX MATCH.
- Maggiore velocità di elaborazione. Se le tabelle sono relativamente piccole, non ci sarà quasi nessuna differenza significativa nelle prestazioni di Excel, ma se i fogli di lavoro contengono centinaia o migliaia di righe e di conseguenza centinaia o migliaia di formule, MATCH INDEX funzionerà molto più velocemente di VLOOKUP perché Excel dovrà elaborare solo le colonne di ricerca e di ritorno anziché l'intero array di tabelle.
L'impatto di VLOOKUP sulle prestazioni di Excel può essere particolarmente evidente se la cartella di lavoro contiene formule di matrice complesse come VLOOKUP e SOMMA. Il punto è che il controllo di ogni valore della matrice richiede una chiamata separata della funzione VLOOKUP. Pertanto, più valori contiene la matrice e più formule di matrice sono presenti in una cartella di lavoro, più lente sono le prestazioni di Excel.
Excel MATCH INDEX - esempi di formule
Conoscendo i motivi per imparare la funzione MATCH INDEX, passiamo alla parte più interessante e vediamo come applicare in pratica le conoscenze teoriche.
Formula INDEX MATCH per guardare da destra verso sinistra
Come già detto, VLOOKUP non può guardare alla sua sinistra. Quindi, a meno che i valori di ricerca non si trovino nella colonna più a sinistra, non c'è alcuna possibilità che una formula Vlookup porti al risultato desiderato. La funzione INDEX MATCH di Excel è più versatile e non si preoccupa di dove si trovano le colonne di ricerca e di ritorno.
Per questo esempio, aggiungeremo la colonna Rank a sinistra della nostra tabella di esempio e cercheremo di capire come si colloca la capitale russa, Mosca, in termini di popolazione.
Con il valore di ricerca in G1, utilizzare la seguente formula per cercare in C2:C10 e restituire un valore corrispondente da A2:A10:
=INDICE(A2:A10,MATCH(G1,C2:C10,0))
Suggerimento: se si intende utilizzare la formula MATCH INDEX per più di una cella, assicurarsi di bloccare entrambi gli intervalli con riferimenti di cella assoluti (come $A$2:$A$10 e $C$2:4C$10) in modo che non vengano distorti durante la copia della formula.
INDEX MATCH MATCH per cercare nelle righe e nelle colonne
Negli esempi precedenti, abbiamo utilizzato INDEX MATCH come sostituto del classico VLOOKUP per restituire un valore da un intervallo predefinito di una colonna. Ma cosa succede se è necessario cercare in più righe e colonne? In altre parole, cosa succede se si vuole eseguire il cosiddetto matrice o bidirezionale ricerca?
Può sembrare complicato, ma la formula è molto simile alla funzione di base di Excel INDEX MATCH, con una sola differenza. Indovinate un po'?
È sufficiente utilizzare due funzioni MATCH: una per ottenere un numero di riga e l'altra per ottenere un numero di colonna. E mi congratulo con coloro che hanno indovinato :)
INDICE (array, MATCH ( Valore vlookup , colonna da guardare in alto , 0), MATCH ( Valore hlookup , fila per guardare in alto , 0))Ora guardate la tabella sottostante e costruite una formula di MATCH INDEX per trovare la popolazione (in milioni) di un determinato Paese per un determinato anno.
Con il Paese di destinazione in G1 (valore vlookup) e l'anno di destinazione in G2 (valore hlookup), la formula assume questa forma:
=INDICE(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Come funziona questa formula
Ogni volta che dovete capire una formula complessa di Excel, scomponetela in parti più piccole e vedete cosa fa ogni singola funzione:
MATCH(G1,A2:A11,0)
- cerca in A2:A11 il valore nella cella G1 ("Cina") e restituisce la sua posizione, che è 2.
MATCH(G2,B1:D1,0))
- cerca tra B1:D1 per ottenere la posizione del valore nella cella G2 ("2015"), che è 3.
I numeri di riga e di colonna corrispondono agli argomenti corrispondenti della funzione INDEX:
INDICE(B2:D11, 2, 3)
Come risultato, si ottiene un valore all'intersezione della seconda riga e della terza colonna dell'intervallo B2:D11, che è il valore della cella D3. Facile? Sì!
Excel INDEX MATCH per cercare criteri multipli
Se avete letto il nostro tutorial su VLOOKUP di Excel, probabilmente avete già provato una formula per Vlookup con criteri multipli. Tuttavia, una limitazione significativa di questo approccio è la necessità di aggiungere una colonna di aiuto. La buona notizia è che la funzione INDEX MATCH di Excel può eseguire ricerche con due o più criteri, senza modificare o ristrutturare i dati di origine!
Ecco la formula generica INDEX MATCH con criteri multipli:
{=INDEX( intervallo_di_ritorno , MATCH(1, ( criteri1 = gamma1 ) * ( criteri2 = gamma2 ), 0))}Nota: si tratta di una formula di matrice che deve essere completata con la scorciatoia Ctrl + Maiusc + Invio.
Nella tabella di esempio qui sotto, supponiamo di voler trovare l'importo in base a 2 criteri, Cliente e Prodotto .
La seguente formula INDEX MATCH funziona benissimo:
=INDICE(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Dove C2:C10 è l'intervallo da cui restituire un valore, F1 è il criterio1, A2:A10 è l'intervallo da confrontare con il criterio1, F2 è il criterio 2 e B2:B10 è l'intervallo da confrontare con il criterio2.
Ricordate di inserire correttamente la formula premendo Ctrl + Maiusc + Invio, ed Excel la racchiuderà automaticamente tra parentesi graffe come mostrato nella schermata:
Se preferite non utilizzare formule di matrice nei vostri fogli di lavoro, aggiungete un'altra funzione INDEX alla formula e completatela con il solito Invio:
Come funzionano queste formule
Le formule utilizzano lo stesso approccio della funzione di base INDEX MATCH, che esamina una singola colonna. Per valutare più criteri, si creano due o più matrici di valori VERO e FALSO che rappresentano le corrispondenze e le mancate corrispondenze per ogni singolo criterio, quindi si moltiplicano gli elementi corrispondenti di queste matrici. L'operazione di moltiplicazione converte VERO e FALSO in 1 e 0,e produce un array in cui gli 1 corrispondono alle righe che corrispondono a tutti i criteri. La funzione MATCH con un valore di ricerca di 1 trova il primo "1" nell'array e passa la sua posizione a INDEX, che restituisce un valore in questa riga dalla colonna specificata.
La formula senza array si basa sulla capacità della funzione INDEX di gestire gli array in modo nativo. Il secondo INDEX è configurato con 0 numero_riga in modo da passare l'intero array di colonne a MATCH.
Questa è una spiegazione di alto livello della logica della formula. Per i dettagli completi, vedere MATCH INDEX di Excel con criteri multipli.
Excel MATCH INDEX con MEDIA, MAX, MIN
Microsoft Excel dispone di funzioni speciali per trovare un valore minimo, massimo e medio in un intervallo, ma se si desidera ottenere un valore da un'altra cella associata a tali valori, è possibile utilizzare le funzioni MAX, MIN o AVERAGE insieme alla funzione INDEX MATCH.
MATCH INDICE con MAX
Per trovare il valore più grande della colonna D e restituire un valore della colonna C nella stessa riga, utilizzare questa formula:
=INDICE(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
MATCH INDICE con MIN
Per individuare il valore più piccolo nella colonna D ed estrarre un valore associato dalla colonna C, utilizzare questo:
=INDICE(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
PARTITA INDICE con MEDIA
Per calcolare il valore più vicino alla media in D2:D10 e ottenere il valore corrispondente dalla colonna C, la formula da utilizzare è la seguente:
=INDICE(C2:C10, MATCH(MEDIA(D2:D10), D2:D10, -1 ))
A seconda dell'organizzazione dei dati, fornire 1 o -1 al terzo argomento (match_type) della funzione MATCH:
- Se la colonna di ricerca (la colonna D nel nostro caso) è ordinata ascendente , mettere 1. La formula calcolerà il valore più grande che è meno di o uguale al valore medio.
- Se la colonna di ricerca è ordinata discendente inserire -1. La formula calcolerà il valore più piccolo che sia maggiore di o uguale al valore medio.
- Se l'array di ricerca contiene un valore esattamente uguale alla media, è possibile inserire 0 per la corrispondenza esatta. Non è richiesto alcun ordinamento.
Nel nostro esempio, le popolazioni nella colonna D sono ordinate in ordine decrescente, quindi usiamo -1 per il tipo di corrispondenza. Il risultato è "Tokyo", poiché la sua popolazione (13.189.000) è la corrispondenza più vicina che è maggiore della media (12.269.006).
Forse sarete curiosi di sapere che anche VLOOKUP può eseguire tali calcoli, ma come formula di array: VLOOKUP con MEDIA, MAX, MIN.
Utilizzo di MATCH INDICE con IFNA / IFERROR
Come avrete notato, se una formula di MATCH INDEX in Excel non riesce a trovare un valore di ricerca, produce un errore #N/A. Se volete sostituire la notazione standard di errore con qualcosa di più significativo, avvolgete la vostra formula di MATCH INDEX nella funzione IFNA. Ad esempio:
=IFNA(INDICE(C2:C10, MATCH(F1,A2:A10,0)), "Nessuna corrispondenza trovata")
Ora, se si inserisce una tabella di ricerca che non esiste nell'intervallo di ricerca, la formula informa esplicitamente l'utente che non è stata trovata alcuna corrispondenza:
Se si desidera rilevare tutti gli errori, non solo #N/A, utilizzare la funzione IFERROR invece di IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, qualcosa è andato storto!")
Tenete presente che in molte situazioni potrebbe non essere saggio mascherare tutti gli errori, perché segnalano possibili difetti nella formula.
Ecco come usare INDEX e MATCH in Excel. Spero che i nostri esempi di formule vi siano utili e vi aspetto sul nostro blog la prossima settimana!
Eserciziario da scaricare
Esempi di MATCH INDICE in Excel (file .xlsx)