![](https://cdn.wiki-base.com/8988971/excel_formula_get_last_weekday_in_month__2.png.webp)
Загальна формула
=EOMONTH(date,0)+1-WEEKDAY(EOMONTH(date,0)+1-dow)
Резюме
Щоб отримати останній робочий день за місяць (тобто останню суботу, останню п’ятницю, останній понеділок тощо), ви можете скористатися формулою на основі функцій EOMONTH та WEEKDAY.
У наведеному прикладі формула в D5 має вигляд:
=EOMONTH(B5,0)+1-WEEKDAY(EOMONTH(B5,0)+1-C5)
Пояснення
По-перше, ця формула визначає перший день наступного місяця * після * заданої дати. Це робить, використовуючи EOMONTH для отримання останнього дня місяця, а потім додаючи один день:
=EOMONTH(B5,0)+1
Далі формула обчислює кількість днів, необхідних для "відкочування" до останнього запитуваного дня тижня у місяці, що передував (тобто місяця початкової дати):
WEEKDAY(EOMONTH(B5,0)+1-C5)
Всередині WEEKDAY EOMONTH знову використовується для отримання першого дня наступного місяця. З цієї дати значення дня тижня віднімається, і результат надходить у WEEKDAY, який повертає кількість днів для відкочування.
Нарешті, дні відкочування віднімаються з першого числа наступного місяця, що дає кінцевий результат.
Інші будні
У загальній формі формули у верхній частині сторінки, день тижня скорочено "dow". Це число від 1 (неділя) до 7 (субота), яке можна змінити, щоб отримати інший день тижня. Наприклад, щоб отримати останній четвер місяця, встановіть dow на 5.
Примітка: Я натрапив на цю формулу у відповіді на форумі MrExcel від Баррі Гудіні.