Funzioni logiche: la funzione SE
Iniziamo un nuovo blocco di argomenti dedicato a rendere i fogli di calcolo ancora più intelligenti, con funzioni logiche e grafici. Fino ad ora abbiamo scritto formule che calcolano un numero; ora impareremo a scrivere formule che prendono automaticamente una decisione, un po' come faremmo noi confrontando due valori e scegliendo cosa fare di conseguenza. Partiamo dalla funzione logica più usata in assoluto: SE.
La funzione SE restituisce un risultato diverso a seconda che una condizione sia vera o falsa. La sua sintassi è: =SE(condizione; valore_se_vero; valore_se_falso). Ad esempio, "=SE(B2>=6;"Promosso";"Non promosso")" controlla il valore della cella B2: se è maggiore o uguale a 6 scrive "Promosso", altrimenti scrive "Non promosso". Puoi leggerla quasi come una frase in italiano: "se B2 e' maggiore o uguale a 6, allora scrivi Promosso, altrimenti scrivi Non promosso".

Per scrivere la condizione si usano gli operatori di confronto: = (uguale), > (maggiore), < (minore), >= (maggiore o uguale), <= (minore o uguale), <> (diverso). Sono simboli molto simili a quelli che gia' usi in matematica, con l'unica particolarita' che "diverso" si scrive <> invece del simbolo ≠, perche' la tastiera non ha un tasto dedicato a quel simbolo.
Gli operatori di confronto
= uguale, > maggiore, < minore, >= maggiore o uguale, <= minore o uguale, <> diverso. Sono gli stessi simboli che useresti su carta, con l'unica particolarità che "diverso" si scrive <> invece del simbolo ≠.
Cosa succede se serve gestire più di due casi, e non solo vero o falso? Si possono inserire più funzioni SE una dentro l'altra (i cosiddetti "SE annidati"): ad esempio, per trasformare un voto numerico in un giudizio a quattro livelli (Ottimo, Buono, Sufficiente, Insufficiente), si annida un SE dentro l'altro, controllando prima la soglia più alta e via via quelle più basse, fino ad arrivare all'ultima condizione "altrimenti" che copre tutti i casi rimasti.
Un esempio di SE annidati: dal voto al giudizio
Per trasformare un voto numerico in un giudizio a quattro livelli si puo' scrivere: =SE(B2>=8;"Ottimo";SE(B2>=7;"Buono";SE(B2>=6;"Sufficiente";"Insufficiente"))). Il foglio controlla le condizioni in ordine: se la prima e' falsa, passa alla successiva, e cosi' via, fino a trovarne una vera oppure ad arrivare all'ultimo "altrimenti".
A volte, invece, serve controllare piu' condizioni insieme all'interno di una singola regola, senza dover annidare tante SE una dentro l'altra: e' qui che entrano in gioco altre due funzioni logiche molto utili, pensate apposta per combinare piu' condizioni in un colpo solo.
Le funzioni E() e O() per combinare piu' condizioni
La funzione E() restituisce VERO solo se tutte le condizioni indicate sono vere (es. =E(B2>=6;C2>=6) e' vero solo se sia B2 sia C2 sono almeno 6). La funzione O() restituisce VERO se almeno una delle condizioni e' vera. Si usano spesso insieme a SE, ad esempio =SE(E(B2>=6;C2>=6);"Promosso";"Non promosso"), per unire piu' regole in una sola formula.
La logica che sta dietro ogni funzione SE
Il nome "funzioni logiche" non è casuale: si rifà alla logica booleana, formalizzata nell'Ottocento dal matematico britannico George Boole, che per primo trattò il vero e il falso come valori su cui si può calcolare, proprio come si calcola con i numeri. È la stessa logica del vero/falso che, tradotta in 1 e 0, sta alla base del sistema binario e di tutta l'informatica moderna, argomento che abbiamo incontrato fin dal primo anno.

Questa storia mostra bene come un'idea puramente teorica, nata per studiare la logica del pensiero umano, sia diventata negli anni la base concreta di tutta l'informatica: dai microscopici interruttori dentro un microprocessore, fino alla semplice formula SE che stai imparando a scrivere oggi in un foglio di calcolo.
Quando la logica del vero/falso incontro' i circuiti elettrici
Nel 1937, il ventunenne studente americano Claude Shannon scrisse la sua tesi di laurea al MIT dimostrando che la logica booleana di vero/falso poteva essere usata per progettare e semplificare i circuiti elettrici con interruttori accesi/spenti. Quella tesi, definita da molti storici la piu' importante tesi di laurea del Novecento, e' il ponte diretto tra la logica di Boole e tutti i computer elettronici moderni, compreso il foglio di calcolo che stai usando.
Il primo "SE" della storia della programmazione
Il costrutto SE...ALLORA (in inglese IF) esiste da quando esistono i linguaggi di programmazione: comparve gia' nel 1957 in FORTRAN, uno dei primissimi linguaggi ad alto livello della storia. Da allora, ogni linguaggio di programmazione mai creato — da Python a JavaScript, passando per Scratch che incontreremo piu' avanti — ha una sua versione dello stesso identico costrutto logico che stiamo usando qui in un foglio di calcolo.
I filtri antispam della posta elettronica usano proprio questa logica
Quando un servizio di posta elettronica decide se un messaggio e' spam, applica automaticamente centinaia di regole logiche simili a un grande insieme di SE concatenati: se il mittente e' sconosciuto, se il testo contiene certe parole, se ci sono troppi link... ogni condizione contribuisce a un punteggio finale che decide se il messaggio finisce nella posta in arrivo o nello spam.
Il vantaggio delle funzioni logiche è enorme: invece di valutare a mano ogni singola riga di una tabella con centinaia di dati, il foglio di calcolo applica automaticamente la stessa regola a tutte le righe, restituendo subito un giudizio o una decisione coerente per ciascuna, senza il rischio di stancarsi o di distrarsi come potrebbe capitare a una persona dopo la centesima riga controllata a mano.
►VideoGOOGLE FOGLI tutorial 20: Funzioni logiche (SE, IFS, E, O, XOR) (FantasticaMente ING)
►VideoTutorial funzione SE (IF) in Excel: come usarla (MasterExcel.it)
►VideoCondizioni con le funzioni SE, E, O - Excel tutorial italiano (Edoardo Midali)Promosso o non promosso?
Riprendi l'elenco di voti creato in un argomento precedente (o creane uno nuovo con almeno 8 voti da 1 a 10). Aggiungi una colonna "Esito" che usi la funzione SE per scrivere automaticamente "Promosso" se il voto è maggiore o uguale a 6, "Non promosso" altrimenti. Prova poi a modificare un voto e verifica che l'esito si aggiorni da solo.
Nel prossimo argomento vedremo altre funzioni utilissime per contare e cercare dati all'interno di un foglio di calcolo, continuando a costruire la nostra cassetta degli attrezzi di funzioni pronte all'uso.
Mettiti alla prova
1. Qual è la sintassi generale della funzione SE?
=SE(condizione; valore_se_vero; valore_se_falso).
2. Cosa restituisce "=SE(B2>=6;"Promosso";"Non promosso")" se B2 contiene 5?
"Non promosso", perché 5 non è maggiore o uguale a 6.
3. Elenca almeno quattro operatori di confronto usabili in una condizione.
Ad esempio: = (uguale), > (maggiore), < (minore), >= (maggiore o uguale), <= (minore o uguale), <> (diverso) — bastano quattro a scelta.
4. Cosa sono i "SE annidati", e a cosa servono?
Sono funzioni SE inserite una dentro l'altra, usate per gestire più di due casi possibili, non solo vero/falso.
5. Perché conviene usare una funzione SE invece di valutare a mano ogni riga di una tabella con centinaia di dati?
Perché il foglio di calcolo applica automaticamente la stessa regola a tutte le righe in un istante, restituendo un giudizio coerente per ciascuna senza possibilità di errore umano.
6. Chi formalizzò la logica del vero/falso su cui si basano le funzioni logiche, e in quale secolo?
George Boole, matematico britannico, nell'Ottocento.
7. Vero o falso: il simbolo <> in una formula significa "diverso da".
Vero.
8. Scrivi una formula con SE annidati che trasformi un voto in B2 in Ottimo (>=8), Buono (>=7), Sufficiente (>=6) o Insufficiente.
=SE(B2>=8;"Ottimo";SE(B2>=7;"Buono";SE(B2>=6;"Sufficiente";"Insufficiente"))).
9. Qual e' la differenza tra la funzione E() e la funzione O()?
E() e' vera solo se tutte le condizioni indicate sono vere; O() e' vera se almeno una delle condizioni e' vera.
10. Chi dimostro' nel 1937 che la logica booleana poteva progettare circuiti elettrici, e in quale occasione?
Claude Shannon, nella sua tesi di laurea al MIT.
11. In quale linguaggio di programmazione comparve per la prima volta, nel 1957, il costrutto SE...ALLORA (IF)?
In FORTRAN.