Días de semana en un mes (Microsoft Excel)
¿Alguna vez se preguntó cuántos días de la semana en particular ocurren dentro de un mes determinado?
Para algunas personas, es importante saber cuántos martes hay en un mes. ¿Y quién no quiere saber si un mes en particular tendrá cuatro o cinco sábados?
Excel no incluye una función intrínseca que pueda usar para determinar la cantidad de veces que ocurre un día de la semana en particular dentro de un mes determinado. Sin embargo, puede crear sus propias fórmulas y funciones para realizar la tarea.
Primero, considere la siguiente fórmula.
=4+N((WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1))) (DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))-28)>(7*(( WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))>(1+ROW()- ROW($A$2)))+(1+ROW()-ROW($A$2))))
La fórmula se basa en una fecha en A1. Esta fecha debe ser desde el mes en que desea «probar». La fórmula debe copiarse en una celda en la fila 2 y luego copiarse en las seis celdas directamente debajo de ella. Por ejemplo, puede copiar esta fórmula en el rango de celdas B2: B8. La primera respuesta (B2) es el número de domingos del mes, la segunda (B3) es el número de lunes, y así sucesivamente.
El inconveniente de esta fórmula es que utiliza la posición de la celda que contiene la fórmula como parte de la fórmula. Esto significa que la fórmula debe colocarse en algún lugar comenzando en la segunda fila.
Otro inconveniente es que la fórmula es bastante larga y compleja. Si desea una fórmula más corta, debe recurrir a una fórmula de matriz. Una fórmula útil que puede usar supone que proporciona tres argumentos: el año (celda C2), el mes (celda D2) y un día de la semana (celda E2). Con estos tres elementos, la siguiente fórmula funciona muy bien:
=SUM(IF(WEEKDAY(DATE(C2, D2, ROW(INDIRECT("1:" & DAY(DATE(C2, D2+1, 0))))))=E2, 1, 0))
Recuerde que esta es una fórmula de matriz, lo que significa que debe ingresarla presionando Shift + Ctrl + Enter. Además, el valor del día de la semana que ingrese en la celda E2 debe estar en el rango de 1 a 7, donde 1 es el domingo, 2 es el lunes, etc.
Otro enfoque, que no se basa en una fórmula de matriz, es probar la fecha en la celda A1 para cualquier día de la semana que se desee, como se especifica en E2.
(Nuevamente, un valor de 1 a 7, como en el ejemplo anterior.)
=IF(MONTH(DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)-E2)+35)=MONTH(A1),5,4)
Básicamente, la fórmula verifica si hay una quinta instancia en el mes del día de la semana que esté verificando. Si lo hay, se devuelve el valor 5; si no, se devuelve el valor 4. (La fórmula asume correctamente que solo puede haber 4 o 5 instancias de cualquier día de la semana, nunca menos y nunca más.)
También se encuentran disponibles soluciones basadas en macros. Una de esas soluciones es la siguiente:
Function MonthWeekDays(dDate As Date, iWeekDay As Integer) Dim dLoop As Date If iWeekDay < 1 Or iWeekDay > 7 Then MonthWeekDays = CVErr(xlErrNum) Exit Function End If MonthWeekDays = 0 dLoop = DateSerial(Year(dDate), Month(dDate), 1) Do While Month(dLoop) = Month(dDate) If WeekDay(dLoop) = iWeekDay Then _ MonthWeekDays = MonthWeekDays + 1 dLoop = dLoop + 1 Loop End Function
Utiliza la función ingresando lo siguiente en una celda:
=MonthWeekDays(A1,4)
En este uso, el primer argumento (celda A1) contiene una fecha en el mes que se evalúa. El segundo argumento es un valor numérico que representa el día de la semana que desea contar. Este valor debe estar en el rango de 1 a 7, donde 1 es domingo, 2 es lunes y así sucesivamente.
_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 (2183) 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-Weekdays_in_a_Month [Días de la semana en un mes]
.