Fogli elettronici Snippet – Da Stringa a data

Fogli elettronici Snippet – Da Stringa a data

Elaborando dati provenienti dalle fonti più svariate capita di dover trasformare delle stringhe contenti date nel formato data classico di Excel/Calc così da poter fare delle elaborazioni. Vediamo il metodo più immediato.

I nostri dati

Mettiamo di avere un foglio di calcolo contenente i seguenti dati (nel mio caso scaricati da AS/400, ma con i nomi taroccatissimi)

da stringa a data

Aggiungere zeri davanti alla stringa

Come possiamo vedere la stringa di testo ha lunghezze diverse (anche se sempre in formato giorno, mese e anno)

  • GMMAAAA
  • GGMMAAAA

Le stringhe contenti date con il giorno inferiore a 10 sono lunghe 7 caratteri mentre le altre 8, per la trasformazione abbiamo bisogno che tutte le stringhe abbiano la  stessa lunghezza. Possiamo risolvere aggiungendo uno zero davanti alle più corte. Ordiniamo per data e creiamo una colonna di appoggio che poi butteremo via:

da stringa a data

 

Adesso nella colonna Appoggio (C) possiamo usare la formula di concatenazione veloce per tutte quelle data che hanno il giorno inferiore a 10, nel nostro caso le prime due:

=0&CELLA

Nel nostro caso:

=0&b2

Estraiamo la data

Una volta aggiunti li zeri abbiamo:

  • nei caratteri 1 e 2 il giorno
  • nei caratteri 3 e 4 il mese
  • nei caratteri 5,6,7 e 8 l’anno

da stringa a data

Possiamo usare quindi la formula DATA che come argomenti richiede anno;mese;giorno. Ecco la semplice formula:

=data(stringa.estrai(CELLA;5;4);stringa.estrai(CELLA;3;2);stringa.estrai(CELLA;1;2))

Nel nostro caso:

=data(stringa.estrai(b2;5;4);stringa.estrai(b2;3;2);stringa.estrai(b2;1;2))

La formula STRINGA.ESTRAI recupera dalla stringa specificata (primo argomento), partendo dal carattere richiesto (secondo argomento), un numero di caratteri (terzo argomento)

Ecco il risultato finale

da stringa a data

Possiamo adesso copiare (usando incolla speciale) il risultato nella colonna Data di nascita (B) e assegnare il formato data.

You May Have Missed