viernes, julio 15, 2011

Diferenciar fechas de números en Excel

Ya hemos explicado en este blog que en Excel, las fechas son números. Por ejemplo, la fecha de hoy, 15/07/2011, es para Excel el número 40739 que es el número de días transcurridos desde el 01/01/1900.

Cuando introducimos en una celda un valor que Excel pueda reconocer como fecha, el formato de fecha es aplicado automáticamente. Pero, por debajo del formato en pantalla, Excel sigue “viendo” el número de serie que representa la fecha. Esta captura de pantalla demuestra el proceso


Esta característica puede crearnos dificultades si tenemos que diferenciar en una fórmula entre fechas y números.

Excel cuenta con varias funciones que nos permiten evaluar el tipo de datos que contiene una celda; por ejemplo: ES.PAR, ESTEXTO, ESNUMERO, etc. (todas bajo la categoría Información en el asistente de funciones). Pero no tiene una función “ESFECHA”, que nos permita establecer si la celda evaluada contiene una fecha.

La única alternativa con funciones es usar la función CELDA con el argumento “formato”. Si el resultado de la fórmula es D1, D2, D3, D4 o D5, entonces la celda evaluada contiene una fecha



Por ejemplo



Pero esta función no reconoce todos los formatos legítimos de fechas (aparentemente debido a los formatos regionales)



Una solución más práctica es crear una UDF (función definida por el usuario) aprovechando que en Vba si hay una función para reconocer fechas: IsDate

Creamos la UDF poniendo este código en un módulo común del editor (si lo guardamos en el Personal, la función estará disponible para todos los cuadernos activos)

Function contiene_fecha(rngCell As Range) As Boolean

    contiene_fecha = IsDate(rngCell)
   
End Function


Al aplicar la función obtenemos el resultado “VERDADERO” o “FALSO” de acuerdo al contenido de la celda

2 comentarios:

  1. Off-Topic

    Me parece muy didáctico el tema de los videos. ¿Podrías decirme que programa utilizas? Me gustaría añadir algunos ejemplos para una presentación que estoy preparando.

    Gracias por adelantado.

    ResponderBorrar
  2. Hay varias aplicaciones, también gratuitas. Yo uso el FastStone Capture. Otra que puedes usar es el Windows Media Encoder.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.