Baza wiedzy / Excel
DATA w Excelu: składniki daty i granice miesięcy
Zbuduj datę z trzech liczb i rozpoznaj, kiedy automatyczne przeniesienie dnia pomaga w formule, a kiedy ukrywa błąd importu.

Masz rok, miesiąc i dzień w osobnych kolumnach. Chcesz dostać wartość, którą można sortować, porównywać i wykorzystać w obliczeniach. W Excelu wybieram do tego DATA, czyli angielską funkcję DATE.
Najważniejsza pułapka jest prosta: DATA potrafi przenieść nadmiarowy dzień lub miesiąc. Dlatego wynik wyglądający jak prawidłowa data nie dowodzi, że wejście było poprawne. Pokażę to na małych danych syntetycznych, z wynikami wynikającymi z dokumentacji Microsoftu.
Składnia DATA i odpowiednik DATE
Dokumentacja funkcji DATA podaje trzy argumenty:
=DATA(rok;miesiąc;dzień)
W angielskiej wersji:
=DATE(year,month,day)
Przykłady PL zakładają średniki między argumentami, a EN przecinki. Ustawienia separatorów mogą się różnić. Nazwa funkcji zależy od języka formuł w Twoim środowisku.
Funkcja jest dostępna w Microsoft 365 i wersjach takich jak Excel 2016, 2019, 2021 oraz 2024. Używam czterocyfrowego roku. W systemie dat 1900 wartości roku od 0 do 1899 są interpretowane przez dodanie 1900, więc samo 24 nie jest bezpiecznym skrótem roku 2024.
Data z trzech kolumn
Przyjmijmy nagłówki A1: Rok, B1: Miesiąc, C1: Dzień. W drugim wierszu wpisz liczby 2024, 6 i 1. W D2:
=DATA(A2;B2;C2)
Wynikiem jest 1 czerwca 2024. Wybierz format daty, żeby zobaczyć ją w oczekiwany sposób. Jeżeli komórka pokaże liczbę, nie oznacza to automatycznie błędu: funkcja zwraca liczbę kolejną daty.
Ja preferuję taki konstruktor w formule zamiast niejednoznacznego tekstu 01/06/2024. Ten tekst może być odczytany według różnych ustawień regionalnych. Przy trzech jawnych liczbach wiadomo, który argument jest miesiącem, a który dniem.
Pozostaje jednak kontrola samych kolumn. Jeśli plik zamienił miejscami miesiąc i dzień, DATA może nadal zwrócić poprawnie wyglądającą wartość. Do raportu potrzebuję potwierdzenia znaczenia kolumn, a nie tylko braku komunikatu o błędzie.
Co robi nadmiarowy dzień lub miesiąc
Poniższe przykłady są syntetyczne. Wynik zapisuję w postaci roku, miesiąca i dnia:
| Formuła PL | Oczekiwana data | Dlaczego |
|---|---|---|
=DATA(2024;13;1) |
2025-01-01 | Miesiąc 13 przechodzi do kolejnego roku |
=DATA(2023;2;29) |
2023-03-01 | Rok 2023 nie ma 29 lutego, więc dzień przechodzi dalej |
=DATA(2024;2;29) |
2024-02-29 | Rok 2024 jest przestępny |
=DATA(2024;3;0) |
2024-02-29 | Dzień 0 oznacza dzień przed początkiem marca |
To normalizacja opisana w DATE, a nie automatyczne odrzucenie niepoprawnej daty. W poprzedniej wersji EN błędnie opisano 29 lutego 2023 jako błąd funkcji. Faktyczny skutek podanych argumentów to 1 marca.
Takie zachowanie bywa wygodne przy granicach okresów. Jeżeli jednak import deklaruje datę urodzenia 29 lutego 2023, cicha zmiana na marzec ukryłaby problem wejścia. Te same reguły funkcji mogą więc pomagać w budowaniu kalendarza i przeszkadzać w walidacji danych.
Jak sprawdzić, czy składniki nie zostały przeniesione
Zakładam tu trzy znane liczby całkowite i czterocyfrowy rok z obsługiwanego zakresu współczesnych dat. D2 zawiera =DATA(A2;B2;C2). Porównuję wynikowe składniki z wejściowymi:
=ORAZ(ROK(D2)=A2;MIESIĄC(D2)=B2;DZIEŃ(D2)=C2)
ORAZ zwraca PRAWDA, jeśli wszystkie porównania są prawdziwe. Dla 2024, 6, 1 wynikowe składniki się zgadzają. Dla 2023, 2, 29 miesiąc i dzień po normalizacji różnią się od wejścia, więc otrzymasz FAŁSZ.
To kontrola przeniesienia składników w opisanym zakresie, bez pełnego systemu walidacji importu. Puste komórki, błędy, ułamkowe wartości i zakres dat wymagają osobnych reguł wejścia. Nie traktuję też historycznego systemu dat Excela jako ogólnego kalendarza do wszystkich obliczeń historycznych.

Początek i koniec miesiąca
Dla roku w A2 i miesiąca w B2 początek miesiąca tworzę jawnie:
=DATA(A2;B2;1)
Koniec tego samego miesiąca można wyrazić jako dzień poprzedzający początek następnego:
=DATA(A2;B2+1;0)
Dla A2 równego 2024 i B2 równego 2 otrzymasz 29 lutego 2024. Najpierw przechodzisz do marca, potem wybierasz jego dzień zero. Nie musisz wpisywać na sztywno liczby dni w lutym.
Przy filtrowaniu zdarzeń z godzinami często wygodniej użyć początku miesiąca i początku kolejnego miesiąca jako wyłączonej górnej granicy. Sama data końca miesiąca nie oznacza automatycznie wszystkich godzin tego dnia. Wybór granic zależy od tego, czy źródło zawiera datę, czy datę z czasem.
Dni kalendarzowe i data bieżąca
Jeśli D2 zawiera prawidłową datę, =D2+7 dodaje siedem dni kalendarzowych. =E2-D2 obliczy różnicę liczbową między dwiema wartościami dat. Nie jest to automatycznie liczba dni roboczych. Godziny, jeśli są częścią wartości, mogą dać część ułamkową.
Bieżącą datę w polskim Excelu zwraca DZIŚ(). Poprzednia nazwa DZISIAJ() na tej stronie była błędna. Formuła =DATA(ROK(DZIŚ());1;1) tworzy początek bieżącego roku, więc wynik zależy od dnia przeliczenia arkusza.
W raporcie historycznym wolę osobną komórkę z datą odniesienia. Dzięki temu otwarcie skoroszytu za miesiąc nie zmienia po cichu okresu analizy. Data bieżąca jest przydatna wtedy, gdy właśnie taki ruchomy punkt odniesienia jest zamierzony.
Format wyświetlania i system dat
Excel obsługuje systemy dat 1900 i 1904. Według dokumentacji systemów dat różnica odpowiadających im liczb kolejnych wynosi 1462 dni. Przy przenoszeniu surowych numerów między skoroszytami trzeba uwzględnić ich ustawienia.
Dlatego nie przypisuję znaczenia dacie na podstawie samej liczby bez informacji o systemie. Do zwykłego raportu używam jawnych konstruktorów dat i sprawdzam wybrane wartości po imporcie. Zmiana wyglądu komórki na datę nie ustali, z jakiego systemu pochodził wklejony numer.
Format określa wygląd, a nie znaczenie danych. Wbudowane formaty daty są wygodnym początkiem; przy niestandardowych kodach sprawdź język i podgląd. Nie zakładam, że ciąg kodów skopiowany z innej wersji językowej da identyczny podpis.
Następny krok: daty z warunkami
Kiedy masz już prawidłową kolumnę dat, możesz porównywać zdarzenia. MIN.WARUNKÓW i MAKS.WARUNKÓW wybierają datę skrajną dla miasta lub okresu. DATA przygotuje wtedy jednoznaczne granice roku.
Do ćwiczenia wpisz rok 2023 i luty, a potem rok 2024 i luty. Przewidź datę z =DATA(A2;B2+1;0) oraz wynik kontroli składników dla dnia 29. Wyjaśnij, dlaczego konstrukcja końca miesiąca korzysta z normalizacji, a kontrola importu ma wykrywać jej niezamierzone skutki. Ja chcę rozumieć oba zastosowania, zanim skopiuję formułę do całej kolumny.
Najważniejsze w pigułce
Czy DATA odrzuci 29 lutego w nieprzestępnym roku?
Nie. DATA(2023;2;29) przeniesie nadmiarowy dzień i zwróci 1 marca 2023. Dlatego konstruktor nie zastępuje kontroli danych wejściowych.
Jak znaleźć ostatni dzień miesiąca funkcją DATA?
Dla roku w A2 i miesiąca w B2 użyj DATA(A2;B2+1;0). Dzień zero następnego miesiąca jest końcem poprzedniego.
Dlaczego zamiast daty widzę liczbę?
DATA zwraca liczbę kolejną. Zastosuj format daty i pamiętaj, że interpretacja surowego numeru zależy od systemu dat skoroszytu.
Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.
