Salta al contenuto principale

Microsoft Excel - Power Query - Data ora da testo in formato timestamp

Obiettivo

Abbiamo una colonna in Excel che contiene la data e ora in formato

AAMMGGhhmmss 
Microsoft Excel - Power Query - Data ora da testo in formato timestamp

Vogliamo convertire questa colonna in formato DataOra 

Microsoft Excel - Power Query - Data ora da testo in formato timestamp

 Il file di esempio DataOraTesto.xlsx è allegato sotto.

 

Soluzione

Creiamo un file Excel ConvertiDataOra.xlsx 

Importiamo il file di Excel DataOraTesto.xlsx in Power Query 

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - Creazione Power Query

Selezioniamo la tabella DataOraTesto.

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - importazione file Excel

Eliminiamo il passaggio Modificato tipo in quanto il contenuto della colonna è un testo e non un numero.

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - eliminazione passaggio

 

Creiamo un nuovo parametro da Home > Gestisci parametri > nuovo parametro

Microsoft Excel - Power Query - Data ora da testo in formato timestamp

Lo chiamiamo FromTextToDate

 Microsoft Excel - Power Query - Data ora da testo in formato timestamp - creazione del parametro

Creiamo la Funzione Personalizzata facendoci aiutare da https://claude.ai

Questo il prompt

Crea una funzione personalizzata in power query.
La funzione prende in ingresso la colonna di una tabella.
La colonna è di tipo testo formato da 12 caratteri senza spazi.
Il contenuto della colonna è anno(ultime 2 cifre), mese, giorno, ora, minuti, secondi.
Esempio 2025 maggio 29 13:53:00 è espresso come 250529135300.
La funzione deve restituire il risultato in formato data ora

Questo il risultato che dovremmo ritoccare 

let
   ConvertTimestampToDateTime = (timestampText as text) as datetime =>
   let
       // Verifica che il testo sia di 12 caratteri
       validLength = Text.Length(timestampText) = 12,
       
       result = if validLength then
           let
               // Estrazione delle componenti dal testo di 12 caratteri
               anno2cifre = Text.Middle(timestampText, 0, 2),
               mese = Text.Middle(timestampText, 2, 2),
               giorno = Text.Middle(timestampText, 4, 2),
               ora = Text.Middle(timestampText, 6, 2),
               minuti = Text.Middle(timestampText, 8, 2),
               secondi = Text.Middle(timestampText, 10, 2),
               
               // Conversione in numeri
               annoNum = Number.FromText(anno2cifre),
               meseNum = Number.FromText(mese),
               giornoNum = Number.FromText(giorno),
               oraNum = Number.FromText(ora),
               minutiNum = Number.FromText(minuti),
               secondiNum = Number.FromText(secondi),
               
               // Calcolo dell'anno completo (assumendo 20xx per anni < 50, 19xx per anni >= 50)
               annoCompleto = if annoNum < 50 then 2000 + annoNum else 1900 + annoNum,
               
               // Creazione della data/ora
               dataOra = #datetime(annoCompleto, meseNum, giornoNum, oraNum, minutiNum, secondiNum)
           in
               dataOra
       else
           error "Il testo deve essere di esattamente 12 caratteri"
   in
       result
in
   ConvertTimestampToDateTime

Andiamo ad editare il testo del parametro con Visualizza>Editor avanzato.

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - Editor avanzato del parametro

Nell'editor incolliamo il testo ritoccato che è allegato nel file DateTimeFromTextToTimestamp_0.txt allegato.

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - codice della funzione

 Confermiamo con OK.

In questo modo abbiamo creato la funzione FromTextToDate che accetta un parametro di tipo testo. Ora la utilizziamo nella Query DataOraTesto. 

Andiamo in Aggiungi colonna > Richiama funzione personalizzata.

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - utilizzo della funzione personalizzata

Inseriamo:

  • nome. DataOra
  • selezioniamo la funzione creata: FromTextToDate
  • selezioniamo la colonna da trasformare: Data Ora Testo
Microsoft Excel - Power Query - Data ora da testo in formato timestamp - utilizzo della funzione personalizzata funzione

Otteniamo la colonna desiderata

Microsoft Excel - Power Query - Data ora da testo in formato timestamp - applicazione della funzione personalizzata

Ritocchi

tipizziamo la nuova colonna come data ora

Microsoft Excel - Power Query - tipizzazione della colonna

eliminiamo la prima colonna che non serve più

Microsoft Excel - Power Query - Eliminazione della colonna

Terminiamo con Home > Chiudi e carica

Microsoft Excel - Power Query - Chiudi e carica la query

Infine abbiamo la tabella in Excel

Microsoft Excel - Power Query - Risultato finale

 

Considerazioni

L'utilizzo delle funzioni in Power Query è utile se devo applicare la stessa procedura a più colonne o più query.