
Fórmula genérica
=EOMONTH(date,0)+1-WEEKDAY(EOMONTH(date,0)+1-dow)
Resumen
Para obtener el último día de la semana de un mes (es decir, el último sábado, el último viernes, el último lunes, etc.) puede utilizar una fórmula basada en las funciones EOMONTH y WEEKDAY.
En el ejemplo que se muestra, la fórmula en D5 es:
=EOMONTH(B5,0)+1-WEEKDAY(EOMONTH(B5,0)+1-C5)
Explicación
Primero, esta fórmula determina el primer día del mes siguiente * después * de una fecha determinada. Hace esto usando EOMONTH para obtener el último día del mes, luego agregando un día:
=EOMONTH(B5,0)+1
A continuación, la fórmula calcula la cantidad de días necesarios para "retroceder" al último día de la semana solicitado en el mes anterior (es decir, el mes de la fecha original):
WEEKDAY(EOMONTH(B5,0)+1-C5)
Dentro de WEEKDAY, EOMONTH se usa nuevamente para obtener el primer día del mes siguiente. A partir de esta fecha, se resta el valor del día de la semana y el resultado se ingresa en WEEKDAY, que devuelve el número de días para revertir.
Por último, los días de retroceso se restan del primer día del mes siguiente, lo que arroja el resultado final.
Otros dias de la semana
En la forma general de la fórmula en la parte superior de la página, el día de la semana se abrevia "dow". Este es un número entre 1 (domingo) y 7 (sábado) que se puede cambiar para obtener un día de la semana diferente. Por ejemplo, para obtener el último jueves de un mes, establezca dow en 5.
Nota: Me encontré con esta fórmula en una respuesta en el foro MrExcel de Barry Houdini.