Jak obliczyć następny poniedziałek po określonej dacie?

11

Szukam formuły, która może spojrzeć na wartość komórki zawierającą datę i zwrócić pierwszy poniedziałek po tej dacie.

Przykłady (format MM / dd / rrrr):

10/22/2013 (Tuesday) would return 10/28/2013 (Monday)
10/28/2013 (Monday)  would return 10/28/2013 (Monday)
Brian
źródło

Odpowiedzi:

15

Niech B2komórka zawierająca datę.

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

lub

=IF(WEEKDAY(B2,3)=0, B2, B2+7-WEEKDAY(B2,3))
Franck Dernoncourt
źródło
3

Nieco bardziej eleganckim rozwiązaniem jest przesunięcie każdego wejścia o odpowiednią liczbę dni.

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

Jeśli chcesz być mądry, WEEKDAY nie jest potrzebny, ponieważ wiemy, że epoka przypadła w sobotę (oblicz WEEKDAY (0), aby to sprawdzić)

=B2+MOD(9-B2,7)
Tom McFarlin
źródło
1

Ogólne i eleganckie rozwiązanie, które działa na każdy dzień tygodnia (dzień N):

Komórka B2: data zmiany na następny N-dzień tygodnia; Komórka B3: następny N-dzień tygodnia: Pon = 1, Wt = 2, ...;

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

Dla określonego dnia tygodnia, w tym przypadku poniedziałku (dzień = 1), formuła może być „zakodowana” na

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

Zauważ, że ustawienie drugiego parametru dnia tygodnia na „2” weekday(B2,2)powoduje zwrócenie dnia tygodnia zgodnego z pożądanym N-dniem zastosowanym w powyższej formule (komórka B1), tj. Mon = 1, Wt = 2, ...

Baz
źródło
0

Rozwiązanie Francka jest idealne na poniedziałek, ale nie będzie działać przez inne dni (testowałem tylko drugą formułę). Jednak następująca formuła będzie działać przez inne dni. Niech B2 to data, a B3 to dzień (B3 to od 1 do 7, gdzie niedziela to 1):

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

Uwaga: znajdzie to następnego dnia, nawet jeśli B2 jest dniem wymaganym. Ale następna formuła powróci dzisiaj, jeśli B2 jest żądanym dniem:

=IF(WEEKDAY(B2,1)<=B3, B2+B3-WEEKDAY(B2,1), B2+B3+7-WEEKDAY(B2,1))
Ashi
źródło