Le date in Excel – I Parte

elenco-funzioni-date

Excel dispone di diverse funzioni per le date

Tra i diversi tipi di dati gestiti da Excel uno molto usato è il formato data. Le date riempiono la maggior parte dei nostri fogli e vengono usate nei modi più disparati ed è per questo che esistono una serie di funzioni ad esse dedicate e conoscerle bene ci risparmierà un sacco di lavoro e di errori. Prima di avventurarci nella scoperta di queste funzioni è bene capire come Excel tratti le date. Innanzitutto bisogna sapere che le nostre date vengono memorizzate in formato seriale ovvero un numero intero seguito da diversi decimali. La parte intera indica il numero di giorni passati dal 1 gennaio 1900 mentre i decimali indicano l’ora.

Quindi 1 indica appunto il giorno 1 gennaio 1900 mentre 2 indica il 2 gennaio 1900 e così via. Questo formato è stato scelto per diversi motivi, ad esempio permette di rappresentare la data in qualsiasi forma (es. nel formato americano mese/giorno/anno) mentre un altro è la semplicità di calcolo tra date.

date seriali

Rappresentazione delle date in formato seriale

Una cosa a cui prestare particolare attenzione, Excel non gestisce date antecedenti al 01/01/1900, provare per credere, la cella sarà formattata come testo e non sarà possibile effettuare nessun cacolo su di essa, per constatare l’effettiva differenza provate ad impostare il formato della cella su “numero” e vedrete che non cambierà come accade per le date.

AGGIUNGERE O TOGLIERE GIORNI AD UNA DATA

Ora che abbiamo capito come funzionano le date possiamo iniziare a vedere cosa si può fare con esse. L’operazione più semplice è quella di sommare o sottrarre dei giorni ad una data, per farlo inserite in una cella (es. A1) una data e nella cella adiacente scrivete la seguente formula:

=A1+10

Il risultato sarà una data corrispondente alla data da voi inserita più dieci giorni. Il discorso si complica se volete sommare o sottrarre ore, minuti o mesi. Per queste operazioni dovremo usare le funzioni dedicate.

[random_sc]

 

AGGIUNGERE O TOGLIERE I MESI CON LA FUNZIONE DATA.MESE()

Questa funzione di Excel permette di sommare o sottrarre i mesi da una data esistente, i parametri sono molto semplici

=DATA.MESE(data_iniziale;mesi)

data_iniziale rappresenta la data dalla quale volete partire mentre mesi è un numero intero, positivo o negativo, che rappresenta i mesi che volete aggiungere o sottrarre. Se, ad esempio, in A1 abbiamo la data 01/04/2015 scrivendo in una cella la formula

=DATA.MESE(A1;4)

Excel sommerà 4 mesi alla data restituendo il 01/08/2015. Se il numero di mesi inseriti eccede dicembre verrà automaticamente incrementato anche l’anno, infatti

=DATA.MESE(A1;12)

restituisce 01/04/2016. Se invece volete sottrarre dei mesi non vi resta altro che inserire un numero negativo nel parametro mesi

=DATA.MESE(A1;-3)

ritorna come risultato la data 01/01/2015.

SOMMARE O SOTTRARRE GLI ANNI

Prima vi ho spiegato come sommare giorni e mesi ad una data, vediamo come fare con gli anni. In Excel non esiste una funzione che permetta di sommare anni direttamente ad una data ma bisogna ricorrere ad una formula che sfrutti la funzione DATA.MESE. L’errore più comune infatti è quello di sommare 365 giorni moltiplicati per il numero di anni ad una data in questo modo

=A1+(365*3)

questo metodo è sbagliato perché in caso di anni bisestili cambierà anche il giorno ed, a volte, persino il mese e l’anno. Provate con la data 01/01/2015, il risultato sarà 31/12/2017. Il metodo corretto per farlo è sommare i mesi usando una semplice moltiplicazione, 12*numero di anni, e passarla alla funzione DATA.MESE

=DATA.MESE(A1;12*3)

se in A1 c’è ancora 01/01/2015 il risultato sarà 01/01/2018.

LA FUNZIONE DATA()

Questa funzione permette di creare una data nuova passando come parametri l’anno, il mese e il giorno in questo ordine

=DATA(anno;mese;giorno)

quindi, per fare un esempio

=DATA(2015;05;01)

restituirà la data 01/05/2015. Questa funzione è molto comoda quando si lavora su dati che usano stringhe con formati data diversi e si vuole ricostruire una data sulla quale poter effettuare dei calcoli. Un esempio è la conversione delle date scritte nel formato aaaammgg come ad esempio 20150501, per farlo basterà scrivere la seguente formula (ponendo sempre che la data sia in A1)

=DATA(SINISTRA(A1;4);STRINGA.ESTRAI(A1;5;2);DESTRA(A1;2))

che diventerà

=DATA("2015";"01";"15")

Excel provvederà quindi a creare la nuova data, 01/05/2015.

LE FUNZIONI GIORNO(), MESE(), ANNO()

Il processo inverso a quello appena visto è la necessità di estrarre solo il giorno, il mese o l’anno di una data. Per queste operazioni esistono 3 funzioni dedicate chiamate appunto GIORNO(), MESE() e ANNO(). In tutte e tre le funzioni l’unico parametro da passare è una data (ovviamente seriale e non una stringa). Se la nostra cella A1 contiene sempre la data 01/04/2015 le seguenti funzioni

=GIORNO(A1)

=MESE(A1)

=ANNO(A1)

restituiranno rispettivamente i numeri 1, 4 e 2015.

LA FUNZIONE DATA.VALORE()

Un’altra delle funzioni molto comode per trasformare delle stringhe in date è DATA.VALORE(). Questa funzione permette di trasformare un testo in una data sulla quale poter lavorare, i formati riconosciuti sono davvero tanti. Poniamo di avere in A1 il testo “15 Set 2015”

=DATA.VALORE(A1)

restituirà 15/01/2015 come data in formato seriale, quindi una data con la quale poter effettuare i calcoli. Per provare inserite in una cella ’15 Set 2015, mi raccomando l’apostrofo iniziale, permette di ignorare la formattazione automatica della cella.

CHE GIORNO E’ OGGI? SCOPRIAMOLO ADESSO()

La funzione ADESSO() rientra nelle funzioni di gestione delle date e delle ore, non richiede nessun parametro e restituisce il momento esatto (data e ora) di quell’istante. ATTENZIONE ALL’USO CHE NE FATE, ad ogni aggiornamento del foglio su cui lavorate (basta aggiungere un nuovo valore in una qualunque cella) la funzione aggiorna la cella con la nuova data/ora. Stesso dicasi, ovviamente, se chiudete e riaprite il file. Se il vostro scopo è inserire il giorno attuale in un documento, e quella deve rimanere, allora evitate la funzione ADESSO() ma scrivetela a mano. L’uso corretto di questa funzione è calcolare i minuti, giorni, mesi, etc. da una data ben precisa al momento attuale (es. per controllare se una fattura è scaduta).

DATA FATTURA FINE.MESE() CON EXCEL

Una delle funzioni sulle date comodissima per chi usa Excel per la contabilità è sicuramente FINE.MESE(). Questa funzione ci permette di calcolare l’ultimo giorno del mese di una data o l’ultimo giorno del mese di x mesi successivi o precedenti alla data indicata.

I parametre sono solo 2

=FINE.MESE(data_iniziale;mesi)

data_iniziale è la data dalla quale volete calcolare il fine mese mentre mesi indica di quanti mesi spostare la data. Usare questa funzione è più facile che spiegarla. Usiamo questa volta la data 10/01/2015 nella cella A1

=FINE.MESE(A1;0)

restituirà la data corrispondente alla fine del mese della data selezionata (31/01/2015).

=FINE.MESE(A1;1)

restituirà, invece, la data corrispondente allla fine del mese successivo alla data selezionata (28/02/2015). Si possono, ovviamente, usare anche numeri negativi

=FINE.MESE(A1;-1)

restituirà il 31/12/2014.

E con questo finisce la prima parte delle operazioni sulle date, nel prossimo articolo vedremo come operare sulla differenza tra 2 date e come operare sulle ore e sui minuti.

Come sempre spero di essere stato chiaro, se così non fosse chiedete pure nei commenti.

A presto


'. '
'; $customMessages[] = "Aiutami a far conoscere questo blog ad altre persone perché possa aiutare anche loro, condividi questo articolo su Facebook, Twitter, Google+ o Linkedin, non ti costa nulla e mi aiuterà a diffonderlo dandomi l'ispirazione per scrivere altri articoli."; $customMessages[] = 'Hai trovato questo blog utile o interessante? Lascia una tua opinione sul guestbook per farmi sapere cosa ne pensi e come possa migliorarlo.'; $customMessages[] = 'Sai che puoi iscriverti anche alla newsletter e ricevere le novità direttamente nella tua email? Iscriviti adesso, riceverai solo gli aggiornamenti e niente SPAM. Il tuo indirizzo, inoltre, non sarà condiviso con nessuno.'; $id = rand(0, count($customMessages) -1); echo '
'. '
MESSAGGIO DALL\'AUTORE
'. $customMessages[$id]. '

'; ?>

Gianfranco (Admin)

Appassionato di informatica, fotografia e di tecnologia in generale. Esperto nell'uso di Excel e con tanta voglia di condividere le sue conoscenza con il mondo, sempre pronto a dare una mano (ma non più di due volte, altrimenti rimango senza).

Potrebbero interessarti anche...

24 risposte

  1. carlo ha detto:

    a me piacerebbe capire se in una cella si può sommare automaticamente in una data scelta

    • gianfranco ha detto:

      Ciao Carlo,
      se mi spieghi esattamente cosa vuoi fare ti posso dire se si può o meno. Comunque in una cella si possono fare diversi tipi di calcoli sulle date, aggiungere o sottrarre giorni, differenze fra date ed altro ancora

      • Carlo ha detto:

        Ti faccio un esempio vorrei inserire 1000 in una cella e poi vorrei sottrarre 200 tra 30 giorni, e vorrei che lo facesse in automatico alla data scelta

        • gianfranco ha detto:

          Ciao,
          si, è possibile. Se vuoi fare tutto in una cella puoi scrivere una formula tipo:


          =1000-((OGGI()>=DATA(2016;7;18))*30)

          oppure


          =1000-((OGGI()>=DATA.VALORE("20/07/2016"))*30)

          Se invece vuoi fare un calcolo su più celle puoi usarne una per il calcolo e una per la data, es

          =1000-((OGGI()>=B1)*30)

          Dove B1 contiene la data da confrontare. Se vuoi parametrizzare tutto puoi creare delle celle per ogni valore ed infine usare una delle formule come quelle che ti ho scritto in un’ultima cella usando al posto dei dati fissi i riferimenti delle celle

          Spero ti sia utile

  2. Riccardo ha detto:

    ciao Gianfranco.
    Ho letto con interesse i tuoi articoli relativi all’utilizzo delle date.
    Provo a spiegarti ciò di cui avrei bisogno…
    Ho un file per la mia contabilità personale con due fogli:
    – nel primo metto tutte le date e le spese (con diverse info su
    diverse colonne).
    – nel secondo voglio analizzare i dati del primo e per fare ció
    una cosa che mi tornerebbe utile sarebbe sommare tutte le
    spese avvenute in un mese. Ho capito che dovrei utilizzare
    delle formule “somma.se” però non so come dire al programma
    di andarmi a cercare in tabella i valori relativi ad un mese
    specifico per poterli usare nella formula.

    Grazie!

    PS: non uso specificatamente excel, ma Fogli di Google
    (però il concetto è lo stesso…)

    • Riccardo ha detto:

      Mi sa che non sono stato abbastanza preciso… 🙁
      Vediamo se posso fare meglio:
      come faccio ad usare un intervallo di date nella
      funzione SOMMA.SE?
      Cioè: “somma i dati se la data ad essi relativa è del
      mese di aprile” (oppure se è compresa tra il
      2 di maggio e il 15 giugno).
      Mi auguro che sia più chiaro 🙂

      • gianfranco ha detto:

        Ciao Riccardo,
        scusa ma mi ero perso il tuo commento, le soluzioni possono esser diverse, dipende principalmente da come è strutturato il file e dalla versione di Excel che usi.

        Ad esempio, con versioni di Excel antecedenti alla 2007 puoi usare una formula tipo:


        =MATR.SOMMA.PRODOTTO((A1:A3>=DATA.VALORE("01/01/2016"))*(A1:A3<=DATA.VALORE("31/01/2016"))*B1:B3)

        Ponendo che in A1:A3 ci siano le date e in B1:B3 ci siano i valori.

        Con le versioni più recenti puoi usare semplicemente


        =SOMMA.PIÙ.SE(B:B;A:A;">=01/01/2016";A:A;"<=31/01/2016")

        ovviamente i campi contenenti le date del tuo intervallo possono essere in 2 celle (es. C1 e D1) ed in tal caso diventa:


        =SOMMA.PIÙ.SE(B:B;A:A;">=" & C1;A:A;"<=" & D1)

        Non ti è invece possibile usare il solo mese per filtrare l’intervallo di date, o meglio, dovresti usare delle formule che ti costruiscono le due date in base al mese, ovvero (posto che il mese sia, ad esempio, nella cella D1


        =SOMMA.PIÙ.SE(B:B;A:A;">=" & DATA(2016;D1;1);A:A;"<=" & FINE.MESE(DATA(2016;D1;1);0))

        Spero di averti dato uno spunto per continuare 🙂

        • Riccardo ha detto:

          Grande Gianfranco, direi che questo spunto mi sarà mooooolto utile.
          Uso Fogli Google, dovrebbe essere piuttosto simile come formule,
          almeno quel poco che so lo è.
          Seguo con attenzione i post, mi sa che ti farò altre domande… 🙂

          Intanto grazie per il momento!

          • gianfranco ha detto:

            Allora, in tal caso, sappi che (se non ricordo male)

            SOMMA.PIU.SE si chiama SUMIFS
            FINE.MESE si chiama EOMONTH
            DATE si chiama DATE

            a meno che tu non abbia attivato le formule in italiano 🙂

          • Riccardo ha detto:

            Infatti come supponevo funziona.
            Ecco la formula che ho usato:

            =SUMIFS(F:F;A:A;”>=03/01/2017″;A:A;”<13/01/2017")

            Dove in F ci sono i dati da sommare
            e A ci sono tutte le date.

            Grazie!

  3. Alex ha detto:

    Ciao Gianfranco, vorrei chiedere se è possibile far cambiare la data di una riga di excel nel momento un cui viene modificata una sola casella di quella riga.
    Es:
    un elenco di articoli con diverse caratteristiche elencate in varie caselle tra cui il prezzo, vorrei che la data cambiasse nel momento in cui si cambia il dato della casella prezzo.

    • gianfranco ha detto:

      Ciao Alex,
      con le solo formule non puoi farlo, puoi ricorrere ad una macro in VBA inserita in Worksheet_Change tipo questa:

      Private Sub Worksheet_Change(ByVal Target As Range)
          If Application.Intersect(Target, Range("C:C")) Is Nothing Then
              Exit Sub
          Else
              Range("D" & Target.Row).Value = Now
          End If
      End Sub
      

      Ad ogni cambiamento nella colonna C inserisce data e ora nella colonna D

  4. Meri ha detto:

    in excel vorrei capire il meccanismo di creare una formula che mi permetta di calcolare se in una cella la data (che ha una formula) è maggiore/minore di una altra mi faccia la differenza.
    cosa sbaglio che mi dice che le 08:30 (che è prodotto di una formula) non è minore di 13:30?
    mi sono fatta capire? grazie in anticipo per la risposta

  5. Attilio ha detto:

    Caro Gianfranco, in Excel esiste una formula che permette calcolare tutti i numeri di una data, fino a ridurlo all’unità? Mi spiego con un esempio. Oggi è 04/08/2017. Esiste una formula che in automatico mi permette di sommare il giorno, quindi 4 + il mese, quindi 8 + l’anno 2017. Ossia 4+8+2017=2029, quindi sommare tutti i numeri del numero ottenuto fino ad arrivare all’unità; 2+0+2+9=13=1+3=4

    Altro esempio : 31/12/2017 = 31+12+2017= 2060 = 2 + 0+ 6 +0 = 8;
    si potrebbe fare anche 31= 3 +1 = 4; 12 =1+2=3; 2017=2+0+1+7=10=1+0=1; e poi la somma dei numeri riguardanti giorno mese ed anno ottenuti in precedenza, quindi 4+3+1 =8

    L’idea è inserire la data in una cella ed ottenere a lato il risultato illustrato (nella cella al lato, inserire la eventuale formula se esiste). Grazie per l’attenzione e complimenti per il sito.

  6. Maurizio ha detto:

    Ciao Gianfranco,
    complimenti per gli articoli su Excel… di cui io purtroppo non sono molto ferrato…
    Avrei bisogno di aiuto per una cosa molto semplice, credo:
    creo un foglio excel quotidiano, su una cella devo inserire la data del giorno dopo, e fin qui ok, ma dovrei saltare i sabati e le domeniche, come faccio?
    Esempio: oggi 03/10 martedì creo il foglio con su una cella la data di domani 04/10, venerdì 06/10 lo creo e deve avere la data di lunedì 09/10.
    Mi puoi aiutare?
    Grazie mille
    Maurizio

  7. Marzio Porro ha detto:

    Ciao a tutti, ho la necessità di calcolare gli anni tra una data iniziale e una finale, ma purtroppo excel non gestisce le date antecedenti al 1900. Ho scaricato il file come componente aggiuntivo XDATE.xla ma non capisco come utilizzarlo, qualcuno mi può dare qualche suggerimento? ciao Marzio

  8. Beppe ha detto:

    Ciao, ho la necessità di trovare l’età delle persone in un lungo elenco, dove viene memorizzata la relativa data di nascita per poi ottenere un grafico riepilogativo a barre con i totali per ogni gruppo di età.

  9. Mariangela ha detto:

    Ciao Gianfranco, io dovrei inserire in una tabella lo stato di una pratica (attiva/scaduta) sulla base di una data di scadenza che ho inserito in una colonna, come posso fare per creare una colonna che mi dia in automatico questo dato?
    Grazie in anticipo

  10. valter ha detto:

    Ciao Gianfranco, per comodità in un foglio, riferito ad un solo mese es: febbraio, vorrei inserire nelle celle solo il giorno es: 18, ed automaticamente nella stessa cella mi restituisce la data con il formato 18-feb. Grazie

  11. Manuela ha detto:

    Ciao Gianfranco,
    sto cercando di rendere automatica la lettura della tabella che ti ho incollato qui sotto. Questa contiene delle date di riferimento a dei periodi stabiliti denominati dal numero all’inizio di ogni riga.
    In un’altro foglio dello stesso file, ho una tabella che vorrei fosse a compilazione autometica dove verrá inseria una data, e a seconda di dove si colloca nella tabella ( quindi tra i range forniti) vorrei che la formula mi fornisse nella cella a finco il numero del periodo corrispondente ( quindi da 1 a 13)
    Come posso fare?

    Date From Date To
    1 14-Mar-22 10-Apr-22
    2 11-Apr-22 08-May-22
    3 09-May-22 05-Jun-22
    4 06-Jun-22 03-Jul-22
    5 04-Jul-22 31-Jul-22
    6 01-Aug-22 28-Aug-22
    7 29-Aug-22 25-Sep-22
    8 26-Sep-22 23-Oct-22
    9 24-Oct-22 20-Nov-22
    ​10 ​21-Nov-22 04-Dec-22
    ​11 ​05-Dec-22 15-Jan-23
    ​12 ​16-Jan-23 12-Feb-23
    13​ ​13-Feb-23 12-Mar-23

    grazie mille 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.