Obliczanie ile jest dni roboczych pomiędzy dwiema datami

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 liczbaDni weekendowe
1 lub pominiętySobota, niedziela
2Niedziela, poniedziałek
3Poniedziałek, wtorek
4Wtorek, środa
5Środa, czwartek
6Czwartek, piątek
7Piątek, sobota
11Tylko niedziela
12Tylko poniedziałek
13Tylko wtorek
14Tylko środa
15Tylko czwartek
16Tylko piątek
17Tylko 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)

Jeśli artykuł Ci się podobał, będę wdzięczny gdy go udostępnisz w mediach społecznościowych
Ten wpis został opublikowany w kategorii funkcje i oznaczony tagami , , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.