Registrazione di un orario di immissione dati (Microsoft Excel)
Vinay utilizza un foglio di lavoro Excel per l’immissione dei dati. Le informazioni sono inserite nella colonna A e Vinay vorrebbe avere un modo per aggiungere automaticamente un tempo nella colonna B, adiacente al valore inserito nella colonna A, che indica quando il valore è stato inserito.
Esistono diversi modi per eseguire questa operazione. Il primo è inserire manualmente un’ora selezionando la cella adiacente nella colonna B e premendo Ctrl + Maiusc +; (questo è il punto e virgola). Questa scorciatoia immette l’ora corrente nella cella. Il problema con questo approccio, ovviamente, è che non è automatico e richiede alcuni movimenti e sequenze di tasti in più per l’implementazione.
Un approccio migliore sarebbe usare una formula per inserire l’ora. La funzione ORA restituisce la data e l’ora correnti e puoi usarla in una cella in questo modo:
=NOW()
Naturalmente, questa semplice formula viene aggiornata ogni volta che il foglio di lavoro viene ricalcolato. Ciò significa che la funzione restituisce l’ora corrente ogni volta che si immette un valore nella colonna A. Ciò non è desiderabile perché non si desidera aggiornare l’ora precedente. Potresti provare a usare una formula per verificare se c’è qualcosa nella colonna A, come in questo modo:
=IF(A3="","",IF(B3="",NOW(),B3))
Il problema è che una formula come questa introduce un riferimento circolare nel foglio di lavoro, che presenta tutta una serie di sfide con cui lavorare. Un approccio migliore è creare una macro che venga eseguita automaticamente ogni volta che viene inserito qualcosa nella colonna A. Fare clic con il pulsante destro del mouse sulla scheda del foglio di lavoro utilizzata per l’immissione dei dati e scegliere Visualizza codice dal menu contestuale. Vedrai la finestra del codice per il foglio di lavoro nell’editor di Visual Basic, quindi inseriscilo nella finestra:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rCell As Range Dim rChange As Range On Error GoTo ErrHandler Set rChange = Intersect(Target, Range("A:A")) If Not rChange Is Nothing Then Application.EnableEvents = False For Each rCell In rChange If rCell > "" Then With rCell.Offset(0, 1) .Value = Now .NumberFormat = "hh:mm:ss" End With Else rCell.Offset(0, 1).Clear End If Next End If ExitHandler: Set rCell = Nothing Set rChange = Nothing Application.EnableEvents = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
Con la macro in posizione, ogni volta che inserisci qualcosa in una cella nella colonna A, la cella adiacente nella colonna B conterrà la data e l’ora (formattata per mostrare solo l’ora). Se elimini qualcosa nella colonna A, viene cancellata anche la cella adiacente nella colonna B.
Si noti inoltre che è possibile modificare l’impostazione della proprietà NumberFormat per riflettere il modo in cui si desidera visualizzare la data. Ad esempio, è possibile passare al formato dell’ora di dodici ore modificando “hh: mm: ss” in “h: mm: ss AM / PM”.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3116) 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: