Baza wiedzy / Excel
NUM.TYG i ISO.NUM.TYG w Excelu: numer tygodnia bez pomyłek
Wyjaśniam, dlaczego poniedziałek nie wystarcza do numeracji ISO i jak uniknąć błędów na granicy roku. Zastępuję błędną nazwę NUMER.TYGODNIA.

Raport „według tygodni” potrzebuje jeszcze jednej informacji: według jakiej reguły numerujesz tygodnie? Sam poniedziałek jako początek tygodnia nie rozstrzyga numeracji. W Excelu typ 11 i typ 21 rozpoczynają tydzień w poniedziałek, ale stosują inne zasady wyznaczania tygodnia pierwszego. Na granicy roku ta różnica ma znaczenie.
Używam poprawnej polskiej nazwy NUM.TYG, której angielskim odpowiednikiem jest WEEKNUM. Nazwa NUMER.TYGODNIA ze starszej wersji hasła była błędna. Adres strony pozostaje dotychczasowy, a przykłady poniżej stosują aktualną nazwę z dokumentacji Microsoft.
Składnia i wybór systemu
Dokumentacja NUM.TYG rozróżnia system z tygodniem pierwszym zawierającym 1 stycznia oraz system ISO z tygodniem pierwszym zawierającym pierwszy czwartek roku. Składnia wygląda tak:
=NUM.TYG(liczba_kolejna;[zwracany_typ])
Pierwszy argument jest datą. Drugi wybiera sposób numerowania. Nawiasy kwadratowe oznaczają argument opcjonalny w opisie składni; nie wpisujesz ich w formule. Przy pominięciu typu obowiązuje 1. W tych polskich przykładach używam średników, ale separator zależy od konfiguracji.
W raporcie wpisuję typ jawnie, nawet jeśli odpowiada ustawieniu domyślnemu. Dzięki temu osoba przejmująca plik nie musi domyślać się wybranej reguły. To krótki zapis, który może oszczędzić długiego wyjaśniania rozbieżności między dwoma zestawieniami.
| Typ | Początek tygodnia | Reguła tygodnia pierwszego |
|---|---|---|
| 1 lub pominięty | niedziela | tydzień zawierający 1 stycznia |
| 2 albo 11 | poniedziałek | tydzień zawierający 1 stycznia |
| 12, 13, 14 | wtorek, środa, czwartek | tydzień zawierający 1 stycznia |
| 15, 16, 17 | piątek, sobota, niedziela | tydzień zawierający 1 stycznia |
| 21 | poniedziałek | tydzień zawierający pierwszy czwartek roku, ISO |
ISO możesz zapisać wprost
Gdy raport wymaga numeru tygodnia ISO, korzystam z osobnej funkcji ISO.NUM.TYG:
=ISO.NUM.TYG(A2)
Dla tej samej poprawnej daty numer tygodnia ISO otrzymasz również przez:
=NUM.TYG(A2;21)
Wybieram zapis, który będzie czytelny dla osób utrzymujących plik. Dokumentacja obu funkcji obejmuje Excel 2016, 2019, 2021, 2024 i Microsoft 365. Nie trzeba opisywać ISO jako dodatku dostępnego wyłącznie w najnowszej subskrypcji.
Nie nazywam typów 2 i 11 „europejskim ISO” tylko dlatego, że zaczynają tydzień w poniedziałek. Najpierw ustalam regułę w raporcie, potem dobieram formułę. Jeżeli organizacja ma własny kalendarz rozliczeniowy, numer tygodnia ISO może również nie wystarczyć.
Przykład, który ujawnia różnicę
Do A2 wpisz =DATA(2021;1;1), a do A3 =DATA(2021;1;4). To syntetyczny przykład graniczny. Wyniki wyprowadzam z reguł opisanych w dokumentacji i kalendarza, bez uruchamiania formuł.
| Data | =NUM.TYG(A2;2) |
=NUM.TYG(A2;11) |
=NUM.TYG(A2;21) |
=ISO.NUM.TYG(A2) |
|---|---|---|---|---|
| 2021-01-01 | 1 | 1 | 53 | 53 |
| 2021-01-04, formuły dla A3 | 2 | 2 | 1 | 1 |
Pierwszy stycznia 2021 był piątkiem. W systemie pierwszym wystarczy obecność 1 stycznia, żeby otrzymać tydzień 1. Poniedziałek 4 stycznia rozpoczyna już kolejny tydzień tego systemu, więc wynikiem jest 2. Typy 2 i 11 zachowują się tu tak samo.
W ISO pierwszy czwartek 2021 wypada 7 stycznia. Tydzień zawierający ten czwartek zaczyna się 4 stycznia, dlatego wtedy numer ISO wynosi 1. Piątek 1 stycznia należy jeszcze do ostatniego tygodnia ISO 2020, numer 53. Sam warunek „tydzień od poniedziałku” nie oddaje tej reguły.

Numer tygodnia potrzebuje właściwego roku
Dla 1 stycznia 2021 para „rok kalendarzowy 2021, numer ISO 53” może wprowadzić odbiorcę w błąd. Rok tygodnia ISO to w tym przypadku 2020. Jeśli raportujesz tygodnie ISO, potrzebujesz roku należącego do tego samego systemu, a nie automatycznie roku wyjętego z daty.
Ja zostawiłbym w danych także datę początku tygodnia albo użył uzgodnionej tabeli kalendarza z rokiem i numerem tygodnia. To pozwala zobaczyć, jakie daty obejmuje grupa. W wieloletnim raporcie sam numer 1 połączyłby początki różnych lat. Do klucza okresu potrzebujesz więcej informacji.
Przy kalendarzu firmowym zapytaj o tygodnie niepełne, przypisanie przełomu roku i początek okresu rozliczeniowego. Nie dopasowuj reguły po tym, która daje bardziej znajome liczby w bieżącym miesiącu. Dwie reguły mogą długo pokazywać zgodne wyniki, a rozjechać się w okresie, którego nikt nie sprawdził.
Daty wejściowe i błędy
W przykładach datę buduję przez DATA, zamiast polegać na tekście rozpoznawanym zależnie od locale. Przy imporcie sprawdzam, czy kolumna rzeczywiście zawiera daty Excela. Puste pola i błędne wartości trzeba rozpoznać przed grupowaniem; sama formuła nie określa, co biznesowo oznacza brak daty.
Microsoft wskazuje błąd #NUM! dla typu spoza dopuszczalnej tabeli i daty poza zakresem systemu dat. Przy polskich komunikatach możesz zobaczyć #LICZBA!. Błędna nazwa funkcji to osobny problem, sygnalizowany jako #NAZWA?. Nie próbowałbym naprawiać obu sytuacji zmianą formatu komórki.
Jeżeli wynik nie zgadza się z innym raportem, najpierw porównuję datę, typ numeracji i rok przypisany do tygodnia. Dopiero później sprawdzam agregację. To pomaga odróżnić różnicę kalendarza od problemu z danymi albo podwójnego zliczenia wierszy.
Ćwiczenie przed użyciem w raporcie
Porównaj w małej tabeli daty 31 grudnia 2020, 1 stycznia 2021 i 4 stycznia 2021. Dodaj kolumnę z typem 11 oraz z ISO.NUM.TYG. Dla ISO oczekujesz kolejno 53, 53, 1; dwie pierwsze daty należą do roku tygodniowego 2020. Wyjaśnij regułę, zanim przejdziesz do dużego zbioru.
Potem zapisz przy raporcie pełną definicję okresu: początek tygodnia, regułę tygodnia pierwszego i sposób oznaczania roku. Odbiorca powinien móc zrozumieć ją bez czytania formuły. Jeśli potrzebujesz samego dnia tygodnia, zajrzyj do DZIEŃ.TYG; do numeru dnia miesiąca służy DZIEŃ.
Najważniejsze w pigułce
Jaka jest polska nazwa WEEKNUM?
NUM.TYG. Nazwa NUMER.TYGODNIA używana w starszej wersji hasła była błędna. Do samego numeru tygodnia ISO służy też ISO.NUM.TYG.
Czy NUM.TYG z typem 11 liczy tygodnie ISO?
Nie. Typ 11 zaczyna tydzień w poniedziałek, lecz tydzień pierwszy zawiera 1 stycznia. ISO wymaga typu 21 albo funkcji ISO.NUM.TYG.
Dlaczego 1 stycznia może należeć do poprzedniego roku ISO?
Tydzień pierwszy ISO zawiera pierwszy czwartek roku. Na przykład 1 stycznia 2021 należy do tygodnia 53 roku ISO 2020, a tydzień 1 zaczyna się 4 stycznia.
Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.
