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

Vogliamo convertire questa colonna in formato DataOra

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

Selezioniamo la tabella DataOraTesto.

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

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

Lo chiamiamo FromTextToDate

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 resultin ConvertTimestampToDateTime
Andiamo ad editare il testo del parametro con Visualizza>Editor avanzato.

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

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.

Inseriamo:
- nome. DataOra
- selezioniamo la funzione creata: FromTextToDate
- selezioniamo la colonna da trasformare: Data Ora Testo

Otteniamo la colonna desiderata

Ritocchi
tipizziamo la nuova colonna come data ora

eliminiamo la prima colonna che non serve più

Terminiamo con Home > Chiudi e carica

Infine abbiamo la tabella in Excel

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