Dni robocze (przy pomocy SUMA.ILOCZYNÓW)

by Marcin

Jednym ze sposobów obliczenia ilości dni roboczych (poniedziałek – piątek) pomiędzy dwiema datami jest wykorzystanie funkcji NETWORKDAYS, wchodzącej w skład dodatku Analysis ToolPak (w Excelu 2007 wspomniany dodatek został wbudowany w zestaw macierzystych funkcji programu).

Osobiście preferuję jednak użycie innej funkcji – SUMA.ILOCZYNÓW. Pomimo, że dłuższa w zapisie, nie ogranicza Cię tylko do „tradycyjnych” dni roboczych (poniedziałek – piątek) czy też, w najlepszym razie, do tygodnia z 5 dniami roboczymi.

Korzystając z SUMA.ILOCZYNÓW z łatwością sprawdzisz na przykład:

  • tylko ilość wtorków w podanym przedziale czasowym, lub
  • ilość dni roboczych, ale biorąc pod uwagę fakt, że dniami wolnymi od pracy są np. środa, piątek i sobota (lub dowolna kombinacja dni).

Załóżmy, że w komórce C3 masz datę początkową, w komórce C4 końcową (daty koniecznie w excelowskim formacie daty).

Dni robocze

Formułę

=NETWORKDAYS(C3;C4)

zastąpić możesz formułą:

=SUMA.ILOCZYNÓW(--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4))<>7);
--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>1))

gdzie w miejsce „7” i „1” możesz wpisać cyfry odpowiadające dowolnym dniom tygodnia, które chcesz wykluczyć z kalkulacji.

Niedziela = 1, Poniedziałek =2, Wtorek =3, Środa = 4. Czwartek = 5, Piątek = 6, Sobota = 7.

Kilka słów o tym jak wszystko działa.

Formuła wykorzystuje fakt, że w Excelu daty są przechowywane w postaci liczb. Dlatego też WIERSZ(ADR.POŚR(C3&”:”&C4) przekształcony zostanie do postaci WIERSZ(39337: 39355) i zwróci tablicę z numerami 39337 do 39355 (numery seryjne odpowiadające datom z wybranego zakresu. Innymi słowy jest to tablica ze wszystkimi datami zakresu).

Oczywiście dodając (lub odejmując) fragment:

(--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>numer_dnia)

możesz wybrać dowolne dni, które chcesz wykluczyć lub uwzględnić w swojej kalkulacji.

Dla przykładu, chcąc policzyć tylko liczbę wtorków w podanym przedziale dat możesz użyć:

(--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))=3)

a chcąc policzyć liczbę dni roboczych, przy założeniu, że dniami wolnymi od pracy są środa, piątek i sobota możesz użyć formuły:

=SUMA.ILOCZYNÓW(--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>4);
--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>5);
--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>6))

Dla funkcji NETWORKDAYS możesz także jako parametr podać zakres z dodatkowymi dniami świątecznymi (innymi niż soboty i niedziele), które zostaną odjęte od całkowitej liczby dni. To samo możesz oczywiście zrobić korzystając z SUMA.ILOCZYNÓW. W przykładzie poniżej dodatkowe dni świąteczne znajdują się w komórkach C6:C7.

Funkcja

=SUMA.ILOCZYNÓW(--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>7);
--(DZIEŃ.TYG(WIERSZ(ADR.POŚR(C3&":"&C4)))<>1);
--(LICZ.JEŻELI(C6:C7;WIERSZ(ADR.POŚR(C3&":"&C4)))=0))

jest więc dokładnym, dłuższym w zapisie, ale o wiele bardziej elastycznym, odpowiednikiem

=NETWORKDAYS(C3;C4;C6:C7)

Marcin

{ 11 comments… read them below or add one }

Leave a Comment

Next post: