Excel proporciona una serie de funciones que devuelven Verdadero o Falso según el contenido de una celda. Por ejemplo, ISBLANK devuelve True si una celda está vacía, ISERR devuelve True si una celda contiene un valor de error e ISTEXT devuelve True si una celda contiene texto. Quizás se pregunte si es posible determinar si una celda contiene una hora.

La respuesta corta es no, no puede: Excel no contiene ninguna función para indicar si una celda contiene una hora. La razón es bastante simple: las horas y las fechas en Excel no son técnicamente más que números. Una fecha es cualquier número en el rango de 1 a 2958465, que representan las fechas del 1/1/1900 al 31/12/9999. Si agrega una parte decimal al número, eso representa una hora (0 es medianoche, 0.25 es 6:00 am, 0.5 es mediodía, etc.).

Conociendo el rango de valores que se pueden usar para fechas y horas, junto con el hecho de que una celda que contiene una hora debe formatearse correctamente para mostrar una hora, puede crear una fórmula que indique si una celda contiene una hora:

=IF(AND(CELL("format",B2)>="D6",CELL("format",B2)<="D9"), "Time Format","Not Time Format")

Esta fórmula verifica el formato aplicado a la celda B2. Si el formato es uno de los formatos más utilizados para las horas, devuelve el texto «Formato de hora». Si se utiliza un formato diferente, la fórmula devuelve «No formato de hora».

Un enfoque diferente es verificar si el valor en la celda B2 es un valor de tiempo válido. Puedes hacerlo usando una fórmula como la siguiente:

=IF(TIMEVALUE(TEXT(B2,"hh:mm:ss"))=B2, "Time Entry", "Not a Time Entry")

La función funciona bien siempre que la celda B2 contenga solo un tiempo. Si la celda contiene una fecha y una hora, la función siempre devuelve «No es una entrada de tiempo».

Para obtener lo mejor de ambos mundos, verificar los formatos y el valor en la celda, considere la posibilidad de crear una función definida por el usuario en VBA. La razón es simple: VBA incluye la función IsDate que no solo mira el rango actual del número, sino que también verifica que la celda tenga el formato de fecha. La siguiente macro proporciona un ejemplo de cómo podría crear dicha función:

Function IsTime(rng As Range) As Boolean     Dim sValue As String     sValue = rng.Cells(1).Text     On Error Resume Next     IsTime = IsDate(TimeValue(sValue))

On Error GoTo 0 End Function

Para usar la función, use la siguiente fórmula en una celda:

=IsTime(B2)

La función lee cómo se muestra el valor (usando la propiedad de texto del objeto de celda) y luego intenta convertirlo con la función TIMEVALUE. Si esa es una fecha (determinada por la función IsDate), entonces la pantalla es una hora válida. Si no es una fecha, VBA genera un error, que el código está programado para ignorar.

_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 (3292) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Checking_for_Time_Input [Comprobando la entrada de tiempo].