EXCEL
INTERCETTAZIONE ERRORI IN EXCEL
Uso della Funzione SE
Può capitare una situazione del genere.Vogliamo preparare a priori un foglio di lavoro con tutte le formule ancor prima di compilarlo. Nella colonna Tot mettiamo le formule come visibile nella tabella sottostante:
| Descrizione | Q.tà | Costo | Tot | La formula |
| 0 | =B2*C2 | |||
| 0 | =B3*C3 | |||
| 0 | =B4*C4 | |||
| 0 | =B5*C5 |
| Descrizione | Q.tà | Costo | Tot | La formula |
| 5 | 2 | 10 | =B2*C2 | |
| 7 | 3 | 21 | =B3*C3 | |
| 0 | =B4*C4 | |||
| 0 | =B5*C5 |
Questo problema è di facile soluzione. E' sufficiente che includiamo la formula o la funzione di Excel nella funzione Se. In pratica in queste formule diciamo:
Se il valore nella cella B2 è diverso da nulla esegui il calcolo, altrimenti lascia la cella vuota.
L'esempio è visibile qui:
| Descrizione | Q.tà | Costo | Tot | La formula |
| 5 | 2 | 10 | =SE(B2<>"";B2*C2;"") | |
| 7 | 3 | 21 | =SE(B3<>"";B3*C3;"") | |
| =SE(B4<>"";B4*C4;"") | ||||
| =SE(B5<>"";B5*C5;"") |
Nascondere l'errore #N/D e #DIV/0! con la funzione VAL.ERR e la funzione SE
Molte volte può succedere che le nostre formule restituiscano il messaggio #N/D (valore non disponibile) oppure la ancora più terribile #DIV/0! (Divisione per 0 - zero)
Vediamo un esempio.
In questa tabella abbiamo un elenco che contiene i dati di alcune persone suddivisi in Cognome, Nome, e Partita IVA.
Dato un cognome nella quinta colonna, nella sesta colonna vogliamo il relativo Nome. Per cercare il nome sappiamo che dobbiamo usare il famoso CERCA.VERT.
| 12 | Cognome | Nome | P.IVA | Cogn cerc | Nome trovato | |
|---|---|---|---|---|---|---|
| 13 | Dionisio | Massimo | 40468737659 | Orlandi | Marilena | |
| 14 | Lagana' | Roberto | 08107150002 | Giorgini | #N/D | |
| 15 | Orlandi | Marilena | 60847839230 | |||
| 16 | Calvi | Stefano | 63116541155 | Orlandi | Marilena | |
| 17 | Poggi | Mario | 46135462107 | Giorgini | ||
| 18 | Maini | Anna | 63412085762 |
Se il cognome indicato nella quinta colonna è presente nell'elenco e se la formula è scritta correttamente nella sesta colonna avremo il giusto nome corrispondente.
Ma può succedere anche che il cognome indicato nella quinta colonna non sia presente nella tabella in esame. In questo caso avremo in risposta della funzione un antiestetico #N/D (valore non disponibile) come è ben visibile nella seconda riga della sesta colonna.
Nella prima coppia di righe usiamo la funzione così come ci viene fornita da Excel
=CERCA.VERT(E13;$A$13:$C$18;2;0)
=CERCA.VERT(E14;$A$13:$C$18;2;0)
ed otteniamo:=CERCA.VERT(E14;$A$13:$C$18;2;0)
- il risultato aspettato nel primo caso perchè riesce a trovare nella tabella indicata il cognome indicato nella formula,
- ma un antiestetico #N/D nel secondo caso perchè non trova il cognome indicato nella formula
La sintassi è VAL.ERRORE(val) dove con (val) indichiamo la cella che contiene il valore da valutare
Questa funzione restituisce il valore logico Vero o Falso a seconda dell'esito e, se opportunamente abbinata alla funzione SE e alla formula che intendiamo usare, rende il nostro lavoro più gradevole.
In questo caso con questa formula diciamo ad Excel:
se il CERCA.VERT ci restituisce un errore non scrivere nulla, altrimenti esegui il CERCA.VERT
=SE(VAL.ERRORE(CERCA.VERT(E16;$A$13:$C$18;3;0));"";CERCA.VERT(E16;$A$13:$C$18;3;0))
=SE(VAL.ERRORE(CERCA.VERT(E17;$A$13:$C$18;3;0));"";CERCA.VERT(E17;$A$13:$C$18;3;0))
=SE(VAL.ERRORE(CERCA.VERT(E17;$A$13:$C$18;3;0));"";CERCA.VERT(E17;$A$13:$C$18;3;0))
Un altro esempio
In A11 abbiamo 5
in B11 abbiamo 1
in F11 vogliamo eseguire una divisione: =A11/B11
il risultato sarebbe ovviamente 5: 5/1=5
Ma se in B11 avessimo 0 (zero) oppure la cella vuota (5/0) il risultato della divisione sarebbe #DIV/0! in B11 abbiamo 1
in F11 vogliamo eseguire una divisione: =A11/B11
il risultato sarebbe ovviamente 5: 5/1=5
Anche in questo caso possiamo usare la funzione VAL.ERRORE
=SE(VAL.ERRORE(A11/B11);"";A11/B11)
Scrivere facilmente formule complesse
Punto primo
Innanzitutto possiamo inserire una funzione di Excel senza scrivere un solo carattere.
La cosa è possibile cliccando sul pulsante Inserisci funzione che sta vicino alla barra delle formule e che fa apparire questa finestra dalla quale scegliamo la funzione desiderata. Scelta la funzione vien fuori la finestra di dialogo relativa alla funzione scelta.
In questa finestra basta posizionare il cursore nelle varie caselle di testo e fare clic sulla cella o sulle celle interessate Nelle caselle i riferimenti alle celle si scrivono da soli. E' ovvio che qualche volta dobbiamo scrivere, come in questo caso, qualche piccola cosa. Se non siamo sicuri di ciò che dobbiamo fare in questa finestra, in basso, sulla sinistra c'è sempre un rinvio alla "Guida relativa a questa funzione" che a parer mio è molto esaustiva.
Punto secondo
Le due formule appena presentate, a prima vista ci possono disorientare. Infatti se le dovessimo scrivere direttamente da tastiera non sarebbe difficile commettere errori di digitazione o, addirittura di forma.
Infatti in queste formule usiamo ben tre funzioni del foglio di Excel:
- la funzione SE
- la funzione VAL.ERRORE
- la funzione CERCA.VERTICALE
in una cella vuota scrivo la formula che mi interessa (per esempio, in questo caso, nella cella J2):
A questo punto parto dalla formula finale per creare la formula complessa. In questa ultima formula sostituisco i riferimenti alle celle con le formule in esse contenute.
=CERCA.VERT(E2;$A$2:$C$7;2;0)
in un'altra cella scrivo l'altra funzione (in questo caso nella K2)
=VAL.ERRORE(J2)
nell'altra la funzione finale (nella L2 in questo caso)
=SE(K2;"";J2)
Ma andiamo in ordine.
- in J2 abbiamo la formula: =CERCA.VERT(E2;A2:C7;2;0) che ci può dare sia il valore aspettato che un #N/D
- in K2 abbiamo la formula: =VAL.ERRORE(J2) che ci può dare sia vero (errore presente) che falso (nessun errore)
- in L2 la formula finale è: =SE(K2;"";J2) che ci può dare o una cella vuota se in k2 c'è Vero o il risultato della funzione stessa se in K2 c'è Falso
- opero le sostituzioni nella formula finale =SE(K2;"";J2) che, a scanso di equivoci, provvedo a copiare in un'altra cella:
- al posto di K2 copio VAL.ERRORE(J2): =SE(VAL.ERRORE(J2);"";J2)
- al posto di J2 copio CERCA.VERT(E2;A2:C7;2;0): =SE(VAL.ERRORE(CERCA.VERT(E2;A2:C7;2;0));"";CERCA.VERT(E2;A2:C7;2;0))
Nessun commento:
Posta un commento