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

11

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

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

10/22/2013 (Tuesday) would return 10/28/2013 (Monday)
10/28/2013 (Monday)  would return 10/28/2013 (Monday)
Брайан
источник

Ответы:

15

Пусть B2ячейка с датой.

=IF(WEEKDAY(B2)=2, B2, IF(WEEKDAY(B2)=1,B2+1, B2+9-WEEKDAY(B2)))

или же

=IF(WEEKDAY(B2,3)=0, B2, B2+7-WEEKDAY(B2,3))
Франк Дернонкур
источник
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, ...

Baz
источник
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))
Ashi
источник