Σ Fogli di calcolo

CERCA.VERT: come funziona davvero e quali sono i suoi limiti

Guida pratica a CERCA.VERT: i quattro argomenti, la differenza tra corrispondenza esatta e approssimata, gli errori più comuni e quando passare ad altro.

CERCA.VERT (VLOOKUP nella versione inglese) è probabilmente la funzione più usata dopo SOMMA, e anche una delle più fraintese. Serve a una cosa sola: dato un valore, trovarlo nella prima colonna di una tabella e restituire il contenuto di un'altra colonna sulla stessa riga. Il classico esempio è un listino: scrivi un codice prodotto e ottieni descrizione o prezzo. Funziona in Excel, LibreOffice Calc e Google Sheets con la stessa logica.

La sintassi, argomento per argomento

=CERCA.VERT(valore; tabella; indice_colonna; intervallo)
  1. valore: ciò che cerchi, per esempio il codice in A2.
  2. tabella: l'intervallo che contiene i dati, per esempio Listino!$A$2:$D$500. La ricerca avviene sempre e solo nella prima colonna di questo intervallo.
  3. indice_colonna: il numero della colonna da restituire, contato a partire dalla prima colonna della tabella. Se la tabella parte da A e vuoi il prezzo che sta in D, l'indice è 4.
  4. intervallo: FALSO (o 0) per la corrispondenza esatta, VERO (o 1) per quella approssimata. Se lo ometti, vale VERO.

Una formula tipica è quindi:

=CERCA.VERT(A2; Listino!$A$2:$D$500; 4; FALSO)

Nota i dollari nell'intervallo della tabella: se copi la formula verso il basso senza bloccarla, la tabella scorre insieme alla formula e le ultime righe smettono di trovare i dati.

Il quarto argomento è quello che conta

L'errore più diffuso è dimenticare il quarto argomento. Con la corrispondenza approssimata il programma presume che la prima colonna sia ordinata in modo crescente e, se non trova il valore esatto, restituisce la riga con il valore più grande inferiore a quello cercato. Su un elenco di codici non ordinato il risultato è un dato plausibile ma sbagliato, senza alcun messaggio di errore.

La regola pratica è semplice: per codici, nomi, numeri di fattura e qualsiasi identificativo usa sempre FALSO.

Quando la corrispondenza approssimata è utile

Esiste un caso in cui VERO è proprio ciò che serve: la ricerca per fasce. Immagina una tabella di sconti per quantità:

Quantità minima Sconto
0 0%
50 5%
200 10%
1000 15%

Con =CERCA.VERT(B2; $F$2:$G$5; 2; VERO) una quantità di 340 restituisce 10%, perché 200 è il valore più grande non superiore a 340. Lo stesso schema funziona per scaglioni di provvigioni, voti, classi di età. La prima colonna deve però essere ordinata dal più piccolo al più grande.

I limiti strutturali

CERCA.VERT ha alcuni vincoli che non dipendono da come la scrivi.

  • Cerca solo verso destra. Il valore deve stare nella prima colonna della tabella; non puoi cercare un nome nella colonna C e restituire il codice nella colonna A.
  • L'indice di colonna è un numero fisso. Se qualcuno inserisce una colonna nel listino, l'indice 4 punta ora a un dato diverso e la formula continua a funzionare, restituendo però la colonna sbagliata.
  • Restituisce solo la prima corrispondenza. Se un codice compare due volte, la seconda riga viene ignorata.
  • Non distingue maiuscole e minuscole. «abc» e «ABC» sono considerati uguali.

Perché non trova un valore che c'è

Il messaggio #N/D (#N/A in inglese) significa che il valore non è stato trovato. Spesso però il valore c'è, ma non è identico. Le cause più frequenti sono:

  • Spazi in più, all'inizio o alla fine del testo, tipici dei dati copiati da gestionali o pagine web. ANNULLA.SPAZI li rimuove.
  • Numeri salvati come testo da una parte e come numeri dall'altra. Il codice 1050 come numero e «1050» come testo non coincidono.
  • Caratteri invisibili, come lo spazio non separabile che arriva dalle pagine web.

Un controllo rapido: in una cella vuota scrivi =A2=Listino!A17, confrontando il valore cercato con quello che vedi nella tabella. Se il risultato è FALSO, i due valori sono diversi anche se sembrano uguali.

Gestire gli errori senza nasconderli

Per mostrare un testo al posto di #N/D si usa spesso SE.ERRORE:

=SE.ERRORE(CERCA.VERT(A2; Listino!$A$2:$D$500; 4; FALSO); "Non trovato")

Funziona, ma copre qualsiasi errore, compresi quelli dovuti a un riferimento rotto. È più preciso SE.NON.DISP., che intercetta solo il «valore non disponibile» e lascia visibili gli altri problemi. Nel mio lavoro preferisco mostrare un messaggio esplicito piuttosto che una cella vuota: un vuoto silenzioso viene facilmente scambiato per uno zero.

Quando passare ad altro

Se usi una versione recente di Excel o Google Sheets, CERCA.X risolve quasi tutti i limiti elencati: cerca in qualsiasi direzione, non usa indici numerici e ha la corrispondenza esatta come impostazione predefinita. In alternativa, la combinazione INDICE e CONFRONTA funziona ovunque, anche nelle versioni più vecchie e in LibreOffice. CERCA.VERT resta comunque utile da conoscere, perché la troverai in innumerevoli fogli scritti da altri.

In sintesi

  • CERCA.VERT cerca nella prima colonna della tabella e restituisce una colonna a destra.
  • Per gli identificativi usa sempre FALSO come quarto argomento.
  • La corrispondenza approssimata serve per le fasce, con la prima colonna ordinata.
  • N/D spesso dipende da spazi, testo contro numero o caratteri invisibili.

  • Per ricerche più robuste valuta CERCA.X o INDICE e CONFRONTA.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche