Cordial saludo, nunca he participado en este tipo de foros, pero ley como ayudo en un tema similar y quiciera saber si hay posibilidad de que me apoye en un tema muy similar a este otro.
Hice una matriz en excel, en la que se pretende alimentar una columna con los datos de la fecha de inicio de una serie de eventos y la idea es que por medio de una formula, se logre extraer los días de la semana que se repiten en cada una de estas fechas de inicio (lunes, martes, miércoles, jueves, viernes, sábado y domingo).
Todo muy bien, siempre y cuando las celdas contengan datos, pues cuando están vacías, excel toma la celda vacía como el número 0 y asume que representa un sábado, lo cual entorpece el cálculo.
Agradezco su apoyo en este problema que me ha generado retraso en mis actividades.
En Access hay una función que devuelve verdadero si el argumento es una fecha, y falso si no lo es. Excel no tiene esa función definida, pero sí hay una manera de saberlo. Para esto te tendrías que crear una función definida por el usuario en VBA, porque en este lenguaje sí que hay una función que determina si el valor es una fecha o no.
Puedes definirte una "función definida por el usuario" y utilizarla de manera que compruebe si el valor es una fecha, y si es el caso, que escriba el día de la semana así. Para ello, abre el editor de VBA, crea un nuevo módulo y dentro escribe esta función:
Function ESFECHA(dato) As String
If IsDate(dato) Then
ESFECHA = WeekdayName(Weekday(dato, vbMonday), False, vbMonday)
Else
ESFECHA = "El valor no es una fecha"
End If
End Function
Esto funcionaría introduciendo un valor (como no se define, es un variant, o sea que admite cualquier tipo de valor, incluso valor nulo, exccepto errores), comprueba si es una fecha (IsDate), y si lo es, calcula qué día de la semana es. WeekDay devuelve un número del 1 al 7 indicando el día de la semana, en nuestro caso tomando como valor 1 el lunes. Luego WeekDayName convierte ese número en el nombre del día, lunes, martes...
Para usarlo, simplemente utilízala en tu hoja así:
=ESFECHA(C5)
Un saludo