Quando una formula di ricerca restituisce #N/D, il problema non è sempre la formula: spesso significa semplicemente che il valore non è presente nei dati. In Excel in italiano, la funzione equivalente a ISNA è VAL.NON.DISP e serve proprio a riconoscere questo errore, gestirlo con criterio e mantenere leggibili report e dashboard.
La funzione giusta per gestire gli errori #N/D
- VAL.NON.DISP restituisce VERO solo quando trova l’errore #N/D.
- La sintassi italiana è =VAL.NON.DISP(valore), con il punto e virgola come separatore degli argomenti.
- Per sostituire direttamente #N/D con un testo o un valore si usa SE.NON.DISP.
- VAL.ERRORE controlla tutti gli errori, non soltanto quello relativo ai dati mancanti.
- La funzione non riconosce il testo scritto manualmente "#N/D" come errore reale.
Che cosa controlla VAL.NON.DISP in Excel
La funzione VAL.NON.DISP verifica se un valore corrisponde all’errore #N/D, cioè “valore non disponibile”. Il risultato è logico: Excel restituisce VERO se l’errore è presente e FALSO in tutti gli altri casi.
La sintassi è semplice:
=VAL.NON.DISP(valore)
L’argomento valore può essere una cella, una formula o il risultato di una funzione di ricerca. Per esempio, se la cella A2 contiene #N/D, la formula =VAL.NON.DISP(A2) restituisce VERO. Se A2 contiene un numero, un testo o un altro errore, restituisce FALSO.
Che cosa significa davvero #N/D
L’errore #N/D non indica necessariamente che il foglio sia danneggiato. Nella maggior parte dei casi significa che una ricerca non ha trovato una corrispondenza, per esempio un codice prodotto, un cliente o una data.
Questa distinzione è importante nei progetti di analisi dati. Un valore mancante può essere un’informazione utile, mentre sostituirlo automaticamente con zero rischia di alterare medie, totali e indicatori KPI.

Come usare VAL.NON.DISP con esempi pratici
Il caso più comune nasce da una funzione di ricerca. Supponiamo di avere nella colonna A un elenco di codici cliente e nella colonna B il relativo fatturato. Per controllare se il codice inserito in E2 produce #N/D, si può usare:
=VAL.NON.DISP(CERCA.X(E2;A2:A100;B2:B100))
Se il codice non esiste, CERCA.X restituisce #N/D e VAL.NON.DISP restituisce VERO. Se il codice viene trovato, la funzione di controllo restituisce FALSO.
Mostrare un messaggio diverso
Quando serve una risposta leggibile per chi utilizza il report, VAL.NON.DISP può essere combinata con SE:
=SE(VAL.NON.DISP(CERCA.X(E2;A2:A100;B2:B100));"Codice non trovato";"Codice presente")
Questa soluzione è utile quando bisogna distinguere due situazioni operative. Io la preferisco quando il foglio deve anche guidare l’utente, per esempio chiedendogli di verificare il codice inserito.
Contare quanti valori non sono disponibili
Per contare gli errori #N/D presenti in un intervallo si può usare:
=SOMMA.PRODOTTO(--VAL.NON.DISP(B2:B100))
Gestire CERCA.VERT
La stessa logica vale per CERCA.VERT:
=VAL.NON.DISP(CERCA.VERT(E2;$A$2:$B$100;2;FALSO))
L’ultimo argomento FALSO impone una corrispondenza esatta. Se viene omesso o impostato in modo errato, Excel può produrre risultati inattesi e il controllo di #N/D non risolverà il problema alla radice.
VAL.NON.DISP, VAL.ERRORE e SE.NON.DISP a confronto
Le funzioni di gestione degli errori non sono intercambiabili. Scegliere quella sbagliata può nascondere un errore importante o classificare come “dato mancante” una formula che in realtà contiene un problema di sintassi.
| Funzione | Che cosa controlla | Quando usarla |
|---|---|---|
| VAL.NON.DISP | Solo l’errore #N/D | Per riconoscere una ricerca senza corrispondenza |
| VAL.ERR | Qualsiasi errore tranne #N/D | Quando #N/D deve essere trattato separatamente |
| VAL.ERRORE | Tutti gli errori di Excel | Per un controllo generale della formula |
| SE.NON.DISP | Intercetta #N/D e restituisce un’alternativa | Per mostrare un testo o un valore sostitutivo |
| SE.ERRORE | Intercetta qualsiasi errore | Per proteggere l’output finale, con cautela |
Se il solo obiettivo è sostituire #N/D con un messaggio, la formula più pulita è spesso:
=SE.NON.DISP(CERCA.X(E2;A2:A100;B2:B100);"Non trovato")
Rispetto alla combinazione SE più VAL.NON.DISP, questa formula evita di ripetere la ricerca. Per questo la considero la scelta migliore nei fogli moderni e nei report destinati alla consultazione.
Quando conviene usare SE.NON.DISP invece del controllo logico
VAL.NON.DISP risponde alla domanda “il risultato è #N/D?”. SE.NON.DISP risponde invece alla domanda “che cosa devo visualizzare se il risultato è #N/D?”. La prima è una funzione di verifica, la seconda è una funzione di gestione.
Per esempio, in un report commerciale si può usare:
=SE.NON.DISP(CERCA.X(A2;Anagrafica[Codice];Anagrafica[Regione]);"Regione da verificare")
In questo caso l’utente non vede un errore tecnico, ma riceve un’indicazione utile. La formula, però, non corregge i dati mancanti: li rende soltanto più comprensibili.
Per evitare ambiguità, scelgo messaggi diversi a seconda del processo. “Non trovato” descrive una ricerca senza risultato, mentre “Dati da verificare” segnala una situazione che richiede un intervento. Usare una cella vuota può rendere il report più ordinato, ma elimina anche un’informazione potenzialmente importante.
Perché SE.ERRORE può essere troppo generica
Una formula come =SE.ERRORE(CERCA.X(A2;A:A;B:B);"") nasconde ogni errore, compresi #VALORE!, #RIF! e #DIV/0!. Questo può essere comodo per una tabella destinata soltanto alla visualizzazione, ma è rischioso durante lo sviluppo o la validazione dei dati.
Se un riferimento viene eliminato, non voglio che il foglio mostri semplicemente una cella vuota. Preferisco che l’errore resti visibile finché non ho capito la causa. In pratica, SE.NON.DISP è più precisa, mentre SE.ERRORE è più ampia ma meno diagnostica.
Gli errori più comuni nell’uso della funzione
Confondere un errore reale con il testo #N/D
Queste due formule non fanno la stessa cosa:
=VAL.NON.DISP(A2)
=A2="#N/D"
La prima controlla il valore di errore generato da Excel. La seconda confronta il contenuto con una stringa di testo. Se qualcuno ha digitato manualmente "#N/D", VAL.NON.DISP restituisce FALSO perché non c’è un errore, ma soltanto testo.
Ignorare gli altri tipi di errore
Se una ricerca restituisce #VALORE! a causa di un intervallo incompatibile, VAL.NON.DISP non lo considera un caso positivo. Questo comportamento è corretto: il problema non è un dato assente, ma una formula da correggere.
Quando bisogna individuare ogni tipo di errore, è meglio usare VAL.ERRORE. Quando invece si vuole distinguere tra dato non trovato e formula difettosa, si possono combinare più controlli con SE.
Leggi anche: Collegamenti ipertestuali in Excel - guida pratica e formule
Scambiare una cella vuota per un valore non trovato
Una ricerca può trovare correttamente una riga in cui il risultato è vuoto. In quel caso non è detto che Excel restituisca #N/D. Perciò VAL.NON.DISP potrebbe restituire FALSO anche se nella cella finale non compare alcun dato.
Questa è una delle cause più frequenti di interpretazioni sbagliate nei report. Prima di modificare la formula, controllo sempre se manca la corrispondenza oppure se la corrispondenza esiste ma il campo restituito è vuoto.
Come usare #N/D nei report e nei grafici
In un report analitico non conviene trasformare ogni valore mancante in zero. Lo zero comunica che il fenomeno è stato misurato e ha prodotto quel risultato, mentre #N/D comunica che il valore non è disponibile o non è applicabile.
Nei grafici questa differenza può essere decisiva. In molte situazioni Excel non traccia i valori #N/D, evitando di disegnare una linea che suggerisca falsamente un valore pari a zero. È una tecnica utile per serie temporali con periodi privi di dati, purché il significato venga spiegato chiaramente a chi legge il grafico.
La mia regola è semplice: uso zero per un risultato realmente nullo, una cella vuota per un elemento puramente estetico e #N/D quando il dato non deve essere interpretato come una misura. VAL.NON.DISP aiuta a mantenere questa distinzione nelle formule.
Una scelta precisa rende i fogli Excel più affidabili
Per riconoscere esclusivamente l’errore #N/D, la funzione italiana corretta è VAL.NON.DISP. Se invece vuoi sostituirlo con un messaggio, un valore alternativo o una cella vuota, puoi usare SE.NON.DISP.
La differenza sembra piccola, ma incide sulla qualità dell’analisi. Una formula che distingue tra dato mancante, valore zero e errore tecnico produce report più trasparenti e rende più semplice intervenire sui dati alla fonte.
