Как рассчитать следующий понедельник после указанной даты?


11

Я ищу формулу, которая может посмотреть на значение ячейки, которое содержит дату, и вернуть первый понедельник, который произойдет после этой даты.

Примеры (формат MM / dd / yyyy):

10/22/2013 (Tuesday) would return 10/28/2013 (Monday)
10/28/2013 (Monday)  would return 10/28/2013 (Monday)

Ответы:



3

Немного более элегантное решение состоит в том, чтобы сдвигать каждый вход на нужное количество дней.

=B2+MOD(9-WEEKDAY(B2),7)

Если вы хотите быть умным, WEEKDAY не нужен, так как мы знаем, что эпоха наступила в субботу (рассчитайте WEEKDAY (0), чтобы проверить это)

=B2+MOD(9-B2,7)

1

Общее и элегантное решение, которое работает в любой день недели (N-день):

Ячейка B2: дата, которую нужно изменить на следующий N-й день недели; Ячейка B3: следующий день недели: пн = 1, вт = 2, ...;

=B2+MOD(B3-WEEKDAY(B2,2),7)

Для определенного дня недели, в данном случае понедельник (день = 1), формула может быть жестко

=B2+MOD(1-WEEKDAY(B2,2),7)

Обратите внимание, что установив для 2-го параметра дня недели значение «2», weekday(B2,2)возвращается день недели, соответствующий желаемому N-дню, использованному в приведенной выше формуле (ячейка B1), т. Е. Mon = 1, Tue = 2, ...


0

Решение Франка идеально подходит для понедельника, но оно не будет работать в другие дни (я тестировал только 2-ю формулу). Тем не менее, следующая формула будет работать для других дней. Пусть B2 - это дата, а B3 - день (B3 - от 1 до 7, где воскресенье - 1):

=IF(WEEKDAY(B2,1)<B3, B2+B3-WEEKDAY(B2,1), B2+B3+7-WEEKDAY(B2,1))

Примечание: он будет найден на следующий день, даже если B2 - запрашиваемый день. Но следующая формула вернется сегодня, если B2 - запрашиваемый день:

=IF(WEEKDAY(B2,1)<=B3, B2+B3-WEEKDAY(B2,1), B2+B3+7-WEEKDAY(B2,1))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.