День выплаты может быть одним из восьми возможных дней:
- 12-е (если 13-е - это Страстная пятница, потому что тогда 13-е, 14-е и 15-е будут трехдневными выходными)
- 13 (если это последний рабочий день недели *)
- 14-е (если это последний рабочий день недели *)
- 15 (если это рабочий день *)
- с 4-го по последний день месяца (если с 3-го по последний день - Страстная пятница, потому что тогда последние три дня месяца образуют трехдневные выходные)
- с третьего по последний день месяца (если это последний рабочий день недели *)
- 2-ой-последний день месяца (если это последний рабочий день недели *)
- последний день месяца (если это рабочий день *)
__________
* Рабочий день - с понедельника по пятницу, за исключением Страстной пятницы.
В Excel 2013
WEEKDAY(date, 2)
возвращает 1, если
date
- понедельник,…, 7, если
date
- воскресенье.
Это указано как недавнее расширение; если это не сработает для вас, так и скажите, и мы можем обойти это.
Используя эту
WEEKDAY
функцию, и
EOMONTH
функцию , которая сообщает нам в последний день месяца, мы можем перевести приведенный выше список к следующей формуле:
=AND(OR(AND(DAY(A1)=12,A1+1=F$1), AND(DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(DAY(A1)=15,WEEKDAY(A1,2)<=5), AND(EOMONTH(A1,0)-A1=3,A1+1=F$1), AND(EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5)), A1<>F$1)
где дата Страстной пятницы (14 апреля 2017 г.) (вручную) вводится в ячейку F1
.
Эта формула может быть грубо разбита на
=AND(
OR( AND(something1), AND(something2), AND(something3),
AND(something4), AND(something5), AND(something6)
),
something7
)
где
something1
- это DAY(A1)=12,A1+1=F$1
, который проверяет первую пулю (четверг, 12-е число месяца, когда следующий день - Страстная пятница).
something2
- это DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1)
, что проверяет вторую и третью пули (13-й или 14-е в пятницу или в день (четверг) до Страстной пятницы).
something3
- это DAY(A1)=15,WEEKDAY(A1,2)<=5)
, который проверяет четвертую пулю (15-е число в будний день).
something4
- это EOMONTH(A1,0)-A1=3,A1+1=F$1
, что проверяет пятую пулю (с 4-го по последний день месяца, когда следующий день - Страстная пятница).
something5
- это EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1)
, который проверяет наличие 6-я и 7-я марки (2-й или 3-й до последнего дня месяца, в пятницу или за день до Страстной пятницы).
something6
- это A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5
, что проверяет восьмую пулю (последний день месяца, в будний день).
something7
- это A1<>F$1
, что на сегодняшний день является Страстной пятницей и исключает ее.
Без этого теста мы выделим (цвет / оттенок) четверг, 13 апреля, и пятницу, 14 апреля.
Чтобы проверить это, вы можете установить F1
на каждую из следующих дат на 2017 год и убедиться, что выделены правильные дни.
- Фактическая Страстная пятница этого года: 14 апреля, которая заставляет день выплаты жалованья быть в четверг, 13 апреля.
- 13 января, что приведет к выплате в четверг, 12 января.
- 15 сентября (или 15 декабря), что приведет к выплате в четверг 14-го числа.
- Пятница, 28 апреля, что приведет к выплате в четверг, 27 апреля.
- 29 сентября, что приведет к выплате в четверг, 28 сентября.
- 31 марта (или 30 июня), что приведет к тому, что выплаты начнутся со второго по последний день этого месяца.
Примечание. Если для F1
задана дата, которая не является пятницей, будут отображаться неверные результаты (например, более двух дней выплаты в месяц).