Donna necesita mantener un registro de la actividad que ocurrió durante el día en su centro de despacho. Cuando entra una llamada por radio, necesita documentar quién, qué, por qué, etc. También necesita documentar la hora (en formato de 24 horas) en la que recibió la llamada. Actualmente, Donna hace todo esto en papel. Le gustaría crear una hoja de trabajo en la que pueda escribir y que la marca de tiempo se complete automáticamente tan pronto como ingrese texto en la celda al lado de esa fila. Cuando la celda contigua está vacía, quiere que su celda de marca de tiempo esté en blanco. De esta manera, puede ahorrar tiempo al consultar el reloj para anotar la hora.

Al abordar este problema, supongamos que desea que la marca de tiempo vaya a la columna A y que ingresará su «quién, qué, por qué» y otra información a partir de la columna B. La forma más sencilla de hacerlo es use el acceso directo integrado de Excel para ingresar la hora actual: presione Shift + Ctrl +; (eso es un punto y coma). Siempre que la celda esté formateada para mostrar las horas en formato de 24 horas, verá la hora actual como desee.

Si desea un enfoque más automático, podría pensar que podría usar una fórmula simple en la columna A, como esta:

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

Si bien esto ingresará un tiempo en la columna A si la celda correspondiente en la columna B contiene algo, no dará resultados satisfactorios debido a cómo funciona la función AHORA. Recuerde que la función siempre devuelve la hora actual. Por lo tanto, cada vez que se recalcula la hoja de trabajo, se verifica el contenido de la celda B2. Si hay algo allí, entonces se llama a la función NOW, devolviendo la hora actual del recálculo.

Esto significa que el tiempo que se muestra en la celda de la columna A que contiene esta fórmula siempre cambiará; no será una marca de tiempo real.

Sin embargo, podría hacer que la fórmula de la columna A sea un poco más compleja, de esta manera:

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

La primera vez que ingrese esto, es probable que obtenga un error porque la fórmula es circular. En otras palabras, la fórmula hace referencia a la celda en la que se coloca la fórmula. (En este caso, la fórmula entra en la celda A2 y también hace referencia a la celda A2). Para que esta fórmula funcione correctamente, debe seguir estos pasos:

  1. Muestra el cuadro de diálogo Opciones de Excel. (En Excel 2007, haga clic en el botón Office y luego en Opciones de Excel. En Excel 2010 o versiones posteriores, muestre la pestaña Archivo de la cinta y luego haga clic en Opciones).

  2. Haga clic en Fórmulas en el lado izquierdo de la pantalla. (Ver figura 1)

  3. Asegúrese de que la casilla de verificación Habilitar cálculo iterativo esté seleccionada.

  4. Haga clic en Aceptar.

Ahora, siempre que pones algo en la celda B2, la hora se ingresa automáticamente en la celda A2. Sin embargo, el tiempo solo se coloca allí si la celda A2 estaba previamente en blanco. Si no lo era (lo que significa que ya contenía una hora), entonces el contenido actual de la celda A2 permanece en su lugar.

Si no desea permitir referencias circulares (activando cálculos iterativos), entonces el mejor enfoque será a través de una macro.

Puede usar el evento Worksheet_Change para ingresar automáticamente una hora en la columna A siempre que se ingrese algo en la columna 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

Para configurar la macro, haga clic con el botón derecho en la pestaña de la hoja de trabajo y elija Ver código. A continuación, puede colocar la macro en la ventana de código que se muestra. (Esto coloca la macro en el módulo ThisWorksheet, que es necesario ya que es un controlador de eventos que se ejecuta cada vez que cambia algo en la hoja de trabajo).

La macro comprueba para asegurarse de que se esté ingresando algo en la columna B. Si es así, entonces la variable tCell se establece en la celda correspondiente en la columna A. Si no hay nada en esa celda, entonces la fecha y hora actuales se colocan allí . Si solo quiere el tiempo, cambie la parte más interna de la macro a esto:

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

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13233) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.