Czasami potrzebujemy policzyć ile dni roboczych było pomiędzy dwiema datami. Przykładowo zleceniobiorca pracował przez cały styczeń i chcemy wiedzieć za ile dniówek należy zapłacić. Istnieje w Excelu funkcja o nazwie DNI.ROBOCZE, która jest bohaterem dzisiejszego wpisu.
Uwaga: jeśli korzystasz z Excela 2007, to w tej wersji ta funkcja nazywa się NETWORKDAYS.
Wszystkie przykłady będą się tyczyły stycznia 2022. Dlaczego? Otóż moglibyśmy policzyć ale jest dni roboczych w całym roku 2022, ale wykonując ćwiczenia na jednym miesiącu łatwiej będzie nam ogarnąć czy na pewno Excel dobrze liczy.
Pobierz przykładowy arkusz z ćwiczeniami
W podstawowej wersji funkcja przyjmuje dwa argumenty: data początkowa (włącznie) i data końcowa (włącznie).

W komórce B5 wpisałem następującą formułę:
=DNI.ROBOCZE(B3;B4)
Jak widzimy, Excel policzył, że w styczniu mamy 21 dni roboczych. Funkcja ta działa w bardzo prosty sposób: są zliczane pomiędzy dwiema datami wszystkie dni od poniedziałku do piątku. Popatrzmy, jak to wygląda w kalendarzu:

Na pierwszy rzut oka wszystko się zgadza. Ale wprawne oko być może zauważy, że w puli owych 21 dni roboczych jest data 6 stycznia a jak wiemy, wypada wtedy Święto Trzech Króli, które jest dniem wolnym od pracy.
Funkcja DNI.ROBOCZE nie uwzględnia świąt, gdyż:
- Excel nie wie czy dane obliczenia robimy dla polskiej, czy niemieckiej firmy a jak wiemy, w każdym państwie są różne święta.
- Dodatkowo mogą być przecież jakieś święta branżowe (np. dzień nauczyciela)
Jako trzeci argument funkcji DNI.ROBOCZE możemy podać tablicę ze świętami. Najczytelniej będzie jeśli wypiszemy święta „gdzieś na boku”, albo w osobnym arkuszu. Ja dni świąteczne umieściłem w osobnym arkuszu o nazwie Święta. Nasza formuła wygląda teraz tak:
=DNI.ROBOCZE(B3; B4; Święta!$B$6:$B$17)
A wynik jest już zgodny z prawdą

I tutaj mógłbym zakończyć nasze rozważania, ale co jeśli pracownik pracuje też w soboty (czyli tylko niedziela jest dniem wolnym). Albo jeszcze inaczej: pracownicy muzeów pracują cały tydzień i dla nich weekendem jest tylko poniedziałek. Tutaj z pomocą przychodzi nam bliźniacza funkcja o nazwie DNI.ROBOCZE.NIESTAND. Funkcja ta wymaga od nas podania 4 argumentów (z czego tylko dwa pierwsze są obowiązkowe):
- Data początkowa
- Data końcowa
- Weekend
- Święta
Jako Weekend możemy podać jedną z następujących liczb:
Weekend jako liczba | Dni weekendowe |
1 lub pominięty | Sobota, niedziela |
2 | Niedziela, poniedziałek |
3 | Poniedziałek, wtorek |
4 | Wtorek, środa |
5 | Środa, czwartek |
6 | Czwartek, piątek |
7 | Piątek, sobota |
11 | Tylko niedziela |
12 | Tylko poniedziałek |
13 | Tylko wtorek |
14 | Tylko środa |
15 | Tylko czwartek |
16 | Tylko piątek |
17 | Tylko sobota |
Aby policzyć ile jest dni roboczych w styczniu przy założeniu, że soboty też są dniami pracującymi możemy wpisać taką oto formułę:
=DNI.ROBOCZE.NIESTAND(B3;B4; 11; Święta!$B$6:$B$17)

Uwaga: W styczniu mamy 5 sobót, ale funkcja zwróciła nam wartość 24 a nie 25 gdyż w sobotę 1 stycznia mamy święto!
A teraz coś z zupełnie innej beczki: a co, jeśli ktoś ma wolne np. w poniedziałki i czwartki? Nie ma takiej kombinacji w powyższej tabelce, ale trzeci parametr możemy podać jako (w cudzysłowie) 7 cyfrową kombinacje zer i jedynek. Kolejne cyfry oznaczają kolejne dni tygodnia gdzie 0 to brak wolnego, 1 to informacja, że w ten dzień wypada weekend. Dla naszego poniedziałkowo-czwartkowego weekendu należy wpisać taką oto formułę:
=DNI.ROBOCZE.NIESTAND(B15; B16; "1001000"; Święta!$B$6:$B$17)