Quando si immette un’ora in una cella, Excel indica la presenza dei due punti tra le porzioni dell’ora e dei minuti. A causa della posizione dei due punti sulla tastiera, tuttavia, l’immissione di due punti per ogni valore di tempo immesso può rallentare, in particolare se si dispone di pochi valori di tempo da inserire.

Per questo motivo, potresti chiederti se esiste un modo per saltare l’inserimento dei due punti e farli inserire automaticamente o tutti in una volta.

Inserirli automaticamente richiede un po ‘più di lavoro, richiede l’uso di una macro e verrà trattato a breve. L’immissione dei due punti tutti in una volta può essere eseguita con una formula, come nella seguente:

=TIMEVALUE(REPLACE(A1,3,0,":"))

Questa formula presuppone che il valore temporale (senza due punti) si trovi nella cella A1 e che sia composto da quattro cifre. Pertanto, se la cella A1 contiene un valore come 1422, la formula restituisce 14:22 come valore temporale effettivo. (Potrebbe essere necessario formattare la cella come valore temporale.)

Se la cella di immissione originale potrebbe contenere un’ora che utilizza solo tre cifre, ad esempio 813 invece di 0813, è necessario utilizzare una formula leggermente diversa:

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

Se preferisci che l’inserimento dei due punti avvenga automaticamente, puoi utilizzare una macro. È possibile creare una macro che esaminerà un intervallo di celle in cui si prevede di aggiungere date al foglio di lavoro e quindi inserire i due punti nella voce. Questa operazione viene eseguita creando una macro che viene attivata dall’evento SheetChange. La seguente macro è una di queste:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

Dim TimeStr As String

On Error GoTo EndMacro     If Application.Intersect(Target, Range("C7:D15")) Is Nothing Then         Exit Sub     End If     If Target.Cells.Count > 1 Then         Exit Sub     End If     If Target.Value = "" Then         Exit Sub     End If

Application.EnableEvents = False     With Target         If .HasFormula = False Then             Select Case Len(.Value)

Case 1 ' e.g., 1 = 00:01 AM                     TimeStr = "00:0" & .Value                 Case 2 ' e.g., 12 = 00:12 AM                     TimeStr = "00:" & .Value                 Case 3 ' e.g., 735 = 7:35 AM                     TimeStr = Left(.Value, 1) & ":" & _                     Right(.Value, 2)

Case 4 ' e.g., 1234 = 12:34                     TimeStr = Left(.Value, 2) & ":" & _                     Right(.Value, 2)

Case Else                     Err.Raise 0             End Select             .Value = TimeValue(TimeStr)

End If     End With     Application.EnableEvents = True

Exit Sub

EndMacro:

MsgBox "You did not enter a valid time"

Application.EnableEvents = True     ActiveCell.Offset(-1, 0).Select End Sub

La prima cosa che fa la macro è controllare se i dati appena inseriti erano nell’intervallo C7: D15. In caso contrario, la macro viene chiusa. Controlla anche che sia selezionata solo una singola cella e che la cella non sia vuota. Se tutti questi criteri vengono soddisfatti, la macro controlla la lunghezza del valore nella cella e la completa con zeri iniziali, se necessario. Questa macro è basata su una macro trovata nel sito di Chip Pearson, qui:

http://cpearson.com/excel/DateTimeEntry.htm

_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 (12205) si applica a Microsoft Excel 2007 e 2010. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: