Sam ha molti fogli di lavoro che contengono i tempi. Il problema è che gli orari sono nel formato “1300” anziché nel formato “13:00”. Pertanto, Excel li vede come valori numerici regolari invece di riconoscerli come volte. Sam vuole che vengano convertiti in valori di tempo effettivi.

Esistono diversi modi per affrontare questa attività. Un modo è usare la funzione TIME per convertire il valore in un tempo, come mostrato qui:

=TIME(LEFT(A1,2),RIGHT(A1,2),)

Questa formula presuppone che l’ora nella cella A1 conterrà sempre quattro cifre. In caso contrario (ad esempio, potrebbe essere 427 invece di 0427), la formula deve essere leggermente modificata:

=TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),)

La formula fondamentalmente estrae la cifra (o le cifre) più a sinistra e le utilizza per l’argomento ore della funzione TIME, quindi utilizza le due cifre più a destra per l’argomento minuti. TIME restituisce un valore temporale effettivo, formattato come tale nella cella.

Un approccio formulato simile può essere adottato utilizzando la funzione TIMEVALUE:

=TIMEVALUE(REPLACE(A1,LEN(A1)-1,0,":"))

Questa formula utilizza REPLACE per inserire i due punti nella posizione corretta, quindi TIMEVALUE converte il risultato in un valore temporale. Dovrai formattare la cella risultante in modo che visualizzi l’ora come desideri.

Un’altra variante dell’approccio formulato è usare la funzione TESTO, in questo modo:

=--TEXT(A1,"00\:00")

Ciò restituisce un valore temporale effettivo, che sarà quindi necessario formattare correttamente per essere visualizzato come ora.

Un altro approccio consiste nel fare semplicemente i calcoli sull’ora originale per convertirla in un valore temporale utilizzato da Excel. Questo è facile una volta che ti rendi conto che i valori di tempo non sono altro che una parte frazionaria di un giorno. Pertanto, un valore temporale è un numero compreso tra 0 e 1, derivato dividendo le ore per 24 (le ore di un giorno) ei minuti per 1440 (i minuti di un giorno). Ecco una formula che fa questo:

=INT(A1/100)/24+MOD(A1,100)/1440

Questo determina la parte delle ore del valore originale, che viene quindi divisa per 24. La parte dei minuti (la parte rimasta dal valore originale) viene quindi divisa per 1440 e aggiunta alla prima parte. È quindi possibile formattare il risultato come volta e funziona perfettamente.

Tutte le formule descritte finora utilizzano una nuova colonna per eseguire le conversioni. Questo è utile, ma potresti voler convertire effettivamente il valore sul posto, senza la necessità di una formula. È qui che una macro può tornare utile. La seguente macro convertirà tutte le celle che hai selezionato in valori di tempo e formatterà le celle in modo appropriato:

Sub NumberToTime()

Dim rCell As Range     Dim iHours As Integer     Dim iMins As Integer

For Each rCell In Selection         If IsNumeric(rCell.Value) And Len(rCell.Value) > 0 Then             iHours = rCell.Value \ 100             iMins = rCell.Value Mod 100             rCell.Value = (iHours + iMins / 60) / 24             rCell.NumberFormat = "h:mm AM/PM"

End If     Next End Sub

La macro utilizza una divisione intera per determinare il numero di ore (iHours) e inserisce il resto in iMins. Questo viene quindi regolato in un valore temporale e reinserito nella cella, che viene quindi formattata come ora. È possibile modificare il formato della cella, se lo si desidera, in uno qualsiasi degli altri formati dell’ora supportati da Excel.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (10101) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: