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.

Kajo RudzińskiOpublikowano Aktualizacja 5 min czytania

Wspólna listwa dni łączy dwa puste kalendarze na granicy roku.

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.

Dwa puste kalendarze pokazują różne miejsca rozpoczęcia grupowania, a jedna wspólna listwa dni przechodzi przez granicę.

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.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.