Donna ha bisogno di tenere un registro delle attività che si sono verificate durante il giorno nel suo centro di spedizione. Quando arriva una chiamata alla radio, deve documentare chi, cosa, perché, ecc. Deve anche documentare l’ora (in formato 24 ore) in cui è arrivata la chiamata. Donna attualmente fa tutto questo sulla carta. Vorrebbe creare un foglio di lavoro in cui poter digitare e che il timestamp venga compilato automaticamente non appena inserisce il testo nella cella accanto ad esso in quella riga. Quando la cella accanto ad essa è vuota, vuole che la sua cella timestamp sia vuota. In questo modo può risparmiare tempo nel controllare l’orologio per annotare l’ora.

Nell’affrontare questo problema, supponiamo che tu voglia che il timestamp vada nella colonna A e che tu inserisca il tuo “chi, cosa, perché” e altre informazioni a partire dalla colonna B. Il modo più semplice per farlo è quello di usa la scorciatoia incorporata di Excel per inserire l’ora corrente: premi Maiusc + Ctrl +; (questo è un punto e virgola). A condizione che la cella sia formattata per mostrare gli orari nel formato 24 ore, vedrai l’ora corrente come desideri.

Se vuoi un approccio più automatico, potresti pensare di poter usare una semplice formula nella colonna A, come questa:

=IF(B2<>"", NOW(), "")

Anche se questo inserirà un tempo nella colonna A se la cella corrispondente nella colonna B contiene qualcosa, non darà risultati soddisfacenti a causa di come funziona la funzione NOW. Ricorda che la funzione restituisce sempre l’ora corrente. Pertanto, ogni volta che il foglio di lavoro viene ricalcolato, viene verificato il contenuto della cella B2. Se è presente qualcosa, viene chiamata la funzione NOW, che restituisce l’ora corrente del ricalcolo.

Ciò significa che l’ora mostrata nella colonna A cella contenente questa formula cambierà sempre; non sarà un vero timestamp.

Tuttavia, potresti rendere la formula nella colonna A un po ‘più complessa, in questo modo:

=IF(B2<>"", IF(A2="",NOW(),A2), "")

La prima volta che lo inserisci, è probabile che riceverai un errore perché la formula è circolare. In altre parole, la formula fa riferimento alla cella in cui si trova la formula. (In questo caso, la formula va nella cella A2 e fa riferimento anche alla cella A2.) Per far funzionare correttamente questa formula, è necessario seguire questi passaggi:

  1. Visualizza la finestra di dialogo Opzioni di Excel. (In Excel 2007 fare clic sul pulsante Office e quindi su Opzioni di Excel. In Excel 2010 o versioni successive visualizzare la scheda File della barra multifunzione e quindi fare clic su Opzioni.)

  2. Fare clic su Formule sul lato sinistro dello schermo. (Vedi figura 1.)

  3. Assicurati che la casella di controllo Abilita calcolo iterativo sia selezionata.

  4. Fare clic su OK.

Ora, ogni volta che metti qualcosa nella cella B2, l’ora viene inserita automaticamente nella cella A2. Tuttavia, l’ora viene inserita solo se la cella A2 era precedentemente vuota. Se non lo era (significa che conteneva già un’ora), il contenuto corrente della cella A2 rimane al suo posto.

Se non vuoi consentire riferimenti circolari (attivando calcoli iterativi), l’approccio migliore sarà attraverso una macro.

Puoi usare l’evento Worksheet_Change per inserire automaticamente un’ora nella colonna A ogni volta che qualcosa viene inserito nella colonna B.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rInt As Range     Dim rCell As Range     Dim tCell As Range

Set rInt = Intersect(Target, Range("B:B"))

If Not rInt Is Nothing Then         For Each rCell In rInt             Set tCell = rCell.Offset(0, -1)

If IsEmpty(tCell) Then                 tCell = Now                 tCell.NumberFormat = "mmm d, yyyy hh:mm"

End If         Next     End If End Sub

Per impostare la macro, fare clic con il pulsante destro del mouse sulla scheda del foglio di lavoro e scegliere Visualizza codice. È quindi possibile inserire la macro nella finestra del codice visualizzata. (Questo inserisce la macro nel modulo ThisWorksheet, che è richiesto in quanto è un gestore di eventi che viene eseguito ogni volta che qualcosa nel foglio di lavoro cambia.)

La macro verifica che qualcosa venga effettivamente inserito nella colonna B. In tal caso, la variabile tCell è impostata sulla cella corrispondente nella colonna A. Se non c’è già nulla in quella cella, la data e l’ora correnti vengono inserite lì . Se vuoi solo l’ora, cambia la parte più interna della macro in questo:

tCell = Time                 tCell.NumberFormat = "hh:mm"

_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 (13233) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.