Automatyczna zmiana daty na ostatni poniedziałek

W wielu firmach, zwłaszcza dystrybucyjnych, istnieje konieczność częstej modyfikacji cenników produktów ze względu na zmieniające się ceny zakupu. Zachodzi więc potrzeba, aby znać datę najnowszego cennika lub przynajmniej datę, od której ten cennik powinien obowiązywać.
Przykładowo, gdy firma aktualizuje cennik zawsze w poniedziałki, chcielibyśmy znać datę powstania najnowszego cennika. Jeśli powstał on w poniedziałek 1 września, a dziś jest środa 3 września, chcemy, aby Excel pokazał nam datę 1 września – datę powstania cennika. W tym artykule napiszemy formułę, która wyświetli nam zawsze datę ostatniego poniedziałku.
Ponieważ formuła nie odwołuje się do żadnej komórki arkusza, możesz ją wpisać w dowolnej jego komórce. Formuła wygląda następująco:
=DZIŚ()-(DZIEŃ.TYG(DZIŚ();2)-1)
W pokazanej formule użyto dwóch funkcji, których działanie wyjaśniamy, a następnie przechodzimy do wyjaśniania samej formuły.
 
Funkcja DZIEŃ.TYG. Zwraca numer dnia tygodnia dla podanej daty. Ma dwa argumenty:
  1. pierwszy to data, z której funkcja ma zwrócić dzień tygodnia;
  2. drugi to liczba określająca, który dzień tygodnia (wtorek, środa itp.) ma być uznany za pierwszy dzień tygodnia.
W naszym przykładzie pierwszym dniem tygodnia ma być poniedziałek, czyli drugim argumentem jest cyfra 2.
Funkcja DZIŚ zwraca dzisiejszą datę. Ma tę przewagę nad ręcznym wpisaniem daty w komórkę, że aktualizuje się i zwraca datę niezależnie od tego, kiedy otworzymy plik z arkuszem, w którym się znajduje. Funkcja ta nie ma argumentów.
W naszym przykładzie, jeśli dzisiejszy dzień to poniedziałek – formuła powinna wyświetlić tę właśnie datę. Jeśli to inny dzień – powinna wyświetlić datę poprzedniego poniedziałku.
Funkcja DZIEŃ.TYG sprawdzi, jaki dzień tygodnia przypada na konkretną datę. Dla nas istotne jest, jaki dzień tygodnia mamy dzisiaj. Ustali to następująca funkcja:
=DZIEŃ.TYG(DZIŚ();2)
Funkcja ta jako drugi argument przyjmuje liczbę 2. Oznacza to, że pierwszym dniem tygodnia będzie dla niej poniedziałek, drugim wtorek itd. Jeśli więc otrzymamy w jej wyniku na przykład liczbę 4, oznaczać to będzie, że data, którą sprawdzamy, przypada w czwartek.
Przeanalizujmy sytuacje przedstawione w tabeli 1:
 
Tab. 1. Analiza wybranych dat
Dzisiejsza data Numer dnia tygodnia Nazwa dnia tygodnia Data docelowa Liczba do odjęcia
2014-08-18 1 poniedziałek 2014-08-18 0
2014-08-19 2 wtorek 2014-08-18 1
2014-08-20 3 środa 2014-08-18 2
2014-08-21 4 czwartek 2014-08-18 3
2014-08-22 5 piątek 2014-08-18 4
2014-08-23 6 sobota 2014-08-18 5
2014-08-24 7 niedziela 2014-08-18 6
2014-08-25 1 poniedziałek 2014-08-25 0
2014-08-26 2 wtorek 2014-08-25 1
Weźmy przykładowo 2014-08-19 (kolumna: dzisiejsza data). Jest to wtorek, więc funkcja DZIEŃ.TYG zwróci liczbę 2 (kolumna: numer dnia tygodnia). Docelową datą dla tego dnia, którą powinna zwracać nasza formuła, jest 2014-08-18 (kolumna: data docelowa), czyli ostatni poniedziałek. Zauważmy, że różnica między numerem dnia tygodnia przypadającego w dniu 2014-08-19 (liczba: 2), a numerem dnia tygodnia daty docelowej (zawsze jest to poniedziałek, czyli liczba: 1), jest równa 1 (kolumna: liczba do odjęcia). Tę właśnie różnicę powinniśmy odjąć od daty dzisiejszej. A zatem:
Dzień przypadający na datę dzisiejszą: =DZIEŃ.TYG("2014-08-19";2) = 2
Ostatni poniedziałek: =DZIEŃ.TYG("2014-08-18";2) = 1 (ponieważ interesuje nas zawsze poniedziałek, zawsze będzie to liczba 1).
Działanie: 2 – 1 = 1
Dla wszystkich wtorków będziemy więc odejmować 1 (ponieważ poniedziałek jest 1 dzień wcześniej), dla śród 2 (ponieważ poniedziałek jest 2 dni wcześniej) i tak dalej. Dla poniedziałków oczywiście nic nie odejmujemy (zero).


Malina Cierzniewska-Skweres

Zaloguj się, aby dodać komentarz

Nie masz konta? Zarejestruj się »

Zobacz także

Skuteczne narzędzia do wykrywania uszkodzonych podzespołów

pobierz

Wykrywanie i usuwanie niechcianych programów

pobierz

Polecane artykuły

Array ( [docId] => 49977 )

Array ( [docId] => 49977 )
Array ( [docId] => 49977 )