Corso
Probabilmente hai sentito parlare di VLOOKUP(). È una delle funzioni più conosciute (se non la più conosciuta) in Excel. E una volta capito come funziona, ti piacerà usarla perché risolve un problema notoriamente insidioso e che richiede tempo. VLOOKUP è davvero il modo in cui Microsoft ti restituisce un sacco di tempo.
In questo articolo, chiarirò come funziona VLOOKUP() e ti guiderò attraverso i suoi usi più comuni. E potrai sempre tornare qui più tardi se dimentichi uno degli argomenti.
Cosa fa VLOOKUP()?
Ora che ho preparato il terreno, vediamo chiaramente cosa fa esattamente VLOOKUP().
In sostanza, VLOOKUP() cerca un valore nella prima colonna di una tabella (o intervallo di celle) e restituisce un valore da un’altra colonna nella stessa riga.
Pensala così: "Trova questo elemento nel mio elenco e dammi qualcos’altro dalla stessa riga".
Ci sono quattro argomenti importanti che usi ogni volta:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
-
lookup_value: Il valore che vuoi cercare. -
table_array: L’intervallo di celle che contiene i tuoi dati (inclusa sia la colonna in cui cercare sia la/le colonna/e da cui restituire il valore). -
col_index_num: Il numero di colonna (partendo da1per quella più a sinistra) nel table_array da cui restituire il valore. -
[range_lookup]: Opzionale. InserisciFALSEper una corrispondenza esatta (di solito è ciò che vuoi) oppureTRUEper una corrispondenza approssimativa.
VLOOKUP() è una funzione per cui devi capire bene gli argomenti. Non tutte le funzioni sono così, ma VLOOKUP() lo è sicuramente.
Esempio base di VLOOKUP() in Excel
Mettiamo al lavoro VLOOKUP(). Supponiamo di avere una semplice tabella di prodotti e prezzi, come questa:

Diciamo che vuoi sapere il prezzo di una banana. Puoi usare:
=VLOOKUP("Banana", A2:B4, 2, FALSE)
-
"Banana"è il valore che stai cercando. -
A2:B4è l’intervallo di dati. -
2dice a Excel di restituire il valore dalla seconda colonna, ossia Price. -
FALSEsignifica che vuoi una corrispondenza esatta. (Parleremo meglio di questo argomento più avanti. È quello che crea più confusione.)
Questa formula restituirà $0.30.
Ora, inserire il valore a mano non è sempre l’ideale, e questo ci porta al punto successivo:
VLOOKUP() con riferimenti di cella invece di valori fissi
Nell’ultimo esempio ho inserito a mano il valore di ricerca. Nella pratica, spesso vorrai fare riferimento a una cella. Questo rende la formula dinamica e riutilizzabile. Per esempio, se inserisci "Orange" nella cella D2, puoi usare:

=VLOOKUP(D2, A2:B4, 2, FALSE)
Ora, ogni volta che cambi il valore in D2, la formula recupererà il prezzo corrispondente e scoprirai che non c’è bisogno di modificare la formula stessa.
VLOOKUP() con corrispondenza esatta vs. approssimata
A questo punto potresti chiederti di quel quarto argomento, [range_lookup]. A volte non fa differenza, ma altre volte ha un grande impatto sui risultati. La regola pratica è che nella maggior parte dei casi vorrai FALSE per una corrispondenza esatta.
-
Usa
FALSEper elementi come nomi, ID o codici prodotto in cui ti serve una corrispondenza precisa. -
Usa
TRUEper intervalli (pensa a scaglioni fiscali o scale di valutazione) in cui vuoi il valore più vicino senza superare. Ricorda solo (ed è importante): la tua colonna di ricerca deve essere ordinata in ordine crescente quando usiTRUE.
Vediamo un esempio di corrispondenza approssimata:
Supponiamo di avere questa tabella per le aliquote fiscali:

Se il tuo reddito è $15,000:
=VLOOKUP(15000, A2:B4, 2, TRUE)
Excel troverà il valore più vicino minore o uguale a 15000 (che è 10000) e restituirà 15%.
Ma, ancora, per la maggior parte delle ricerche resta su FALSE.
Insidie e limitazioni comuni
Come tutto, VLOOKUP() ha alcune limitazioni: meglio saperlo per non incappare in problemi più avanti. Ecco alcune cose a cui prestare attenzione:
-
Cerca solo da sinistra a destra. Questa è la grande limitazione che viene in mente.
VLOOKUP()cerca sempre nella prima colonna del tuotable_arraye restituisce dati dalle colonne a destra. Se devi cercare dati a sinistra, ti serve un altro approccio. -
Il numero di colonna è statico. Se inserisci o elimini colonne nella tua tabella, il
col_index_numpotrebbe finire per puntare alla colonna sbagliata. A volte, se rompi qualcosa, noterai un’intera colonna di errori#N/A, ma altre volte il problema sarà più difficile da notare. -
Può essere lenta su dataset grandi. Con tabelle molto grandi, potresti notare una reale differenza di prestazioni. Se hai trovato il valore che cerchi e non ti serve che la ricerca resti dinamica, puoi Copiare > Incollare speciale per alleggerire il tuo file di lavoro.
Se ti imbatti in questi problemi, valuta alternative come INDEX()+MATCH(), o la più recente funzione XLOOKUP() (se è disponibile nella tua versione di Excel). (Ti aiuterò a decifrare le differenze tra queste funzioni in una sezione più sotto.)
Rendere i tuoi VLOOKUP() più flessibili
Ora che hai familiarità con le basi, rendiamo le formule VLOOKUP() più flessibili e facili da gestire. Un ottimo trucco è usare gli intervalli denominati. Ad esempio, seleziona A2:B4, digita "ProductTable" in quello che è noto come Nome casella e ora la tua formula può fare riferimento a quel nome:
=VLOOKUP(D2, ProductTable, 2, FALSE)
Questo rende le formule molto più leggibili e manutenibili, soprattutto se le tue tabelle si spostano.
Gestire con eleganza gli errori di VLOOKUP()
A volte VLOOKUP() non riesce a trovare il valore che stai cercando, generando un errore #N/A. Per tenere tutto in ordine e rendere il foglio più facile da usare, puoi usare IFERROR() per intercettare quegli errori:
=IFERROR(VLOOKUP(D2, ProductTable, 2, FALSE), "Not found")
In questo modo, i valori mancanti verranno visualizzati come "Not found" invece che come messaggio di errore, che può essere un po’ antiestetico.
VLOOKUP() vs. INDEX()/MATCH() vs. XLOOKUP()
Ho iniziato a menzionare funzioni alternative prima.
INDEX() e MATCH() insieme sono spesso consigliate, ed ecco perché:
-
INDEX()/MATCH()ti permette di cercare valori in qualsiasi direzione, non solo a destra, che è una grande limitazione diVLOOKUP()che ho menzionato prima. -
La tua colonna di ricerca non deve essere la prima colonna dell’intervallo.
-
Inserire o eliminare colonne non romperà la tua formula.
Ed ecco come XLOOKUP() si confronta con VLOOKUP():
-
XLOOKUP()sostituisce siaVLOOKUP()siaINDEX()/MATCH()combinandone le funzionalità in un’unica formula più intuitiva. -
Puoi cercare a sinistra, destra, sopra o sotto.
-
Non richiede che la colonna di ricerca sia in una posizione fissa.
-
Puoi definire un valore di fallback se non viene trovato nulla, evitando il temuto
#N/Asenza dover usare il trucco conIFERROR()che ti ho mostrato prima.
Alcuni suggerimenti e scorciatoie
Sulla scia di tutto ciò che abbiamo visto, ecco alcuni pratici consigli per VLOOKUP():
-
Riferimenti assoluti: Quando copi la formula verso il basso, blocca il tuo table_array con i segni
$(es.,$A$2:$B$100) per mantenere l’intervallo costante. -
Ordinamento: Per le corrispondenze approssimate (con
TRUE), assicurati che la colonna di ricerca sia ordinata in ordine crescente. -
Corrispondenze parziali:
VLOOKUP()non supporta direttamente i caratteri jolly per le corrispondenze parziali a meno che tu non usiTRUEperrange_lookupo applichi soluzioni creative.
Conclusione
Abbiamo altri ottimi tutorial su casi d’uso specifici di VLOOKUP(). Leggi la nostra raccolta:
- VLOOKUP() da un altro foglio: guida pratica in Excel
- Come fare un VLOOKUP() con criteri multipli
- Come combinare VLOOKUP() con IF() in Excel
Poi, per un percorso di apprendimento strutturato, per dare un contesto migliore a tutto questo e migliorare davvero le tue competenze, iscriviti ai nostri corsi Data Analysis in Excel e Advanced Excel Functions. È davvero il modo migliore per continuare a migliorare con Excel.

Sono uno scrittore e editor di data science, con contributi a articoli di ricerca su riviste scientifiche. Sono particolarmente interessato ad algebra lineare, statistica, R e affini. Inoltre, gioco anche parecchio a scacchi!

