Ir al contenido principal
Estilo de vida

Funciones de fecha y hora en Excel - DATE, NETWORKDAYS y patrones prácticos

El modelo de número de serie - Cómo almacena Excel las fechas

Excel almacena las fechas como números de serie que cuentan días desde el 1 de enero de 1900. El 21 de mayo de 2026 es el entero 46163. Las horas se almacenan como fracciones de un día: las 12:00 del mediodía es 0,5 y las 18:00 es 0,75. Una combinación de fecha y hora como «2026-05-21 18:00» se convierte en 46163,75. Una vez que comprendes esto, cada función de fecha tiene sentido como aritmética sobre números.

Como las fechas son números, la diferencia entre dos fechas es una simple resta, y sumar días es una suma directa. Excel tiene una peculiaridad histórica: trata incorrectamente 1900 como año bisiesto, un artefacto conservado por compatibilidad con Lotus 1-2-3. Esto afecta únicamente a las fechas entre 1900-01-01 y 1900-02-28, algo que prácticamente nadie encuentra en hojas de cálculo reales.

DATE y TIME - Construir valores a partir de componentes

DATE(año, mes, día) construye una fecha a partir de tres enteros. DATE(2026, 5, 21) devuelve el número de serie del 21 de mayo de 2026. Excel normaliza automáticamente los valores fuera de rango, por lo que DATE(2026, 13, 1) se convierte en el 1 de enero de 2027 y DATE(2026, 0, 31) se convierte en el 31 de enero de 2026. Esto es invaluable para cálculos de límites de mes e informes de ventana móvil.

TIME(hora, minuto, segundo) devuelve un valor entre 0 y 1 que representa una hora del día. Combínalo con DATE para obtener una marca de tiempo completa. Para entradas de texto, DATEVALUE y TIMEVALUE convierten cadenas como «2026/05/21» o «18:30:00» en números de serie, útil al importar datos de sistemas externos sin pasar por Power Query.

TODAY y NOW - Manejo de funciones volátiles

TODAY() devuelve la fecha actual y NOW() devuelve la fecha y hora actuales. Ambas son funciones volátiles que se recalculan cada vez que el libro se recalcula, por lo que abrir el archivo o editar cualquier celda puede actualizarlas. Son útiles para paneles en tiempo real pero inadecuadas cuando necesitas capturar un momento fijo en el tiempo.

Para registrar el momento en que se creó una fila, usa el atajo de teclado Ctrl + ; (insertar fecha de hoy) o Ctrl + Shift + ; (insertar hora actual). Ambos insertan valores literales que no cambian después. Con VBA u Office Scripts, también puedes usar eventos Worksheet_Change para escribir Now en una celda adyacente cuando se edita una columna particular, proporcionando registros de auditoría automáticos. Las funciones volátiles en todas partes también ralentizan el recálculo, así que resérvalas para celdas que genuinamente necesiten frescura en tiempo real.

NETWORKDAYS - Contar días laborables

NETWORKDAYS(inicio, fin, [festivos]) devuelve la cantidad de días laborables entre dos fechas, excluyendo sábados y domingos. NETWORKDAYS(«2026-05-04», «2026-05-08») devuelve 5. El tercer argumento opcional acepta un rango de celdas con fechas de días festivos que también se excluyen. Mantener una lista de festivos en otra parte del libro permite que la fórmula maneje calendarios específicos de empresa o país de forma limpia.

Para semanas laborales no estándar, NETWORKDAYS.INTL(inicio, fin, fin_de_semana, [festivos]) acepta un código de fin de semana del 1 (sábado y domingo) al 17 (solo martes) o una cadena personalizada de 7 caracteres como «0000110» para marcar días de descanso explícitamente. Esto cubre semanas de Oriente Medio (viernes y sábado libres), países con un solo día de descanso y turnos rotativos. Combinado con SUMPRODUCT, puedes calcular horas laborales mensuales en patrones de turno complejos.

EOMONTH y EDATE - Aritmética basada en meses

EOMONTH(fecha, meses) devuelve el último día del mes desplazado por la cantidad especificada. EOMONTH(TODAY(), 0) da el final de este mes, EOMONTH(TODAY(), -1) el final del mes pasado y EOMONTH(TODAY(), 1) el final del mes próximo. Esto es esencial para periodos de cierre, informes mensuales y fechas de facturación recurrentes que siempre caen en fin de mes.

EDATE(fecha, meses) desplaza el mismo día del mes hacia adelante o hacia atrás. EDATE sobre el 31 de enero de 2026 con desplazamiento 1 devuelve el 28 de febrero de 2026 porque febrero no tiene día 31. Este ajuste seguro es exactamente lo que necesitan los calendarios de pago de hipotecas, las renovaciones de seguros y la facturación de suscripciones. Para desplazamientos anuales, simplemente multiplica: EDATE(fecha, 12) avanza un año.

WEEKNUM e ISOWEEKNUM - La trampa del número de semana

WEEKNUM(fecha, [tipo]) devuelve el número de semana dentro del año. El segundo argumento selecciona la convención de inicio de semana: 1 para domingo, 2 para lunes. La trampa es que WEEKNUM define la semana 1 como la semana que contiene el 1 de enero, mientras que el estándar ISO 8601 define la semana 1 como la semana que contiene el 4 de enero (por lo que debe contener al menos cuatro días del nuevo año).

La discrepancia es más visible en los límites de año. El 1 de enero de 2026 (jueves) es la semana 1 según WEEKNUM pero la semana ISO 53 de 2025. Los informes de proyectos internacionales suelen usar semanas ISO, por lo que los resúmenes semanales entre equipos pueden mostrar totales diferentes dependiendo de si cada lado usa WEEKNUM o ISOWEEKNUM. Elige una única convención para tu hoja, documéntala explícitamente en la parte superior, y evitarás horas de confusión después.

XB!LINE

¿Te resultó útil este artículo?