Conversione di valori numerici in volte (Microsoft Excel)
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 delle ore della funzione TIME, quindi utilizza le due cifre più a destra per l’argomento dei 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 del tempo non sono altro che una parte di fazione di una giornata. Pertanto, un valore temporale è un numero compreso tra 0 e 1, derivato dividendo le ore per 24 (le ore in un giorno) ei minuti per 1440 (i minuti in 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 macro seguente convertirà tutte le celle che hai selezionato in valori temporali 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 (2775) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: