Spis treści
Ten krótki samouczek wyjaśnia użycie funkcji Excel NETWORKDAYS i WORKDAY do obliczania dni roboczych z niestandardowymi parametrami weekendów i świąt.
Microsoft Excel udostępnia dwie funkcje specjalnie zaprojektowane do obliczania dni tygodnia - DZIEŃ ROBOCZY i DZIEŃ SIECIOWY.
Na stronie DZIEŃ ROBOCZY Funkcja zwraca datę N dni roboczych w przyszłości lub w przeszłości i można jej użyć do dodania lub odjęcia dni roboczych do danej daty.
Używanie NETWORKDAYS Funkcja pozwala obliczyć liczbę dni roboczych pomiędzy dwoma podanymi przez użytkownika datami.
W Excelu 2010 i wyższych dostępne są bardziej rozbudowane modyfikacje wyżej wymienionych funkcji, WORKDAY.INTL i NETWORKDAYS.INTL, które pozwalają określić, które i ile dni są dniami weekendowymi.
A teraz przyjrzyjmy się bliżej każdej funkcji i zobaczmy, jak można jej użyć do obliczenia dni roboczych w arkuszach Excela.
Funkcja WORKDAY w programie Excel
Funkcja WORKDAY programu Excel zwraca datę, która jest określoną liczbą dni roboczych przed lub przed datą początkową. Wyklucza ona weekendy oraz wszelkie święta określone przez użytkownika.
Funkcja WORKDAY służy do obliczania dni roboczych, kamieni milowych i terminów w oparciu o standardowy kalendarz roboczy, w którym sobota i niedziela są dniami weekendowymi.
WORKDAY jest funkcją wbudowaną w Excelu 2007 - 365. We wcześniejszych wersjach należy włączyć Analysis ToolPak.
Używając WORKDAY w Excelu, musisz wprowadzić następujące argumenty:
WORKDAY(start_data, dni, [święta])Pierwsze 2 argumenty są wymagane, a ostatni jest opcjonalny:
- Początek_daty - data, od której należy rozpocząć liczenie dni tygodnia.
- Dni - liczba dni roboczych, które należy dodać do / odjąć od start_date. Liczba dodatnia zwraca datę przyszłą, liczba ujemna zwraca datę przeszłą.
- Wakacje - opcjonalna lista dat, które nie powinny być liczone jako dni robocze. Może to być zarówno zakres komórek zawierających daty, które chcemy wykluczyć z obliczeń, jak i stała tablicowa numerów seryjnych reprezentujących te daty.
Teraz, gdy znasz już podstawy, zobaczmy, jak możesz wykorzystać funkcję WORKDAY w swoich arkuszach Excela.
Jak użyć WORKDAY, aby dodać / odjąć dni robocze do daty
Aby obliczyć dni robocze w Excelu, postępuj zgodnie z tymi prostymi zasadami:
- Do dodać dni robocze, należy wprowadzić liczbę dodatnią jako dni argument formuły WORKDAY.
- Do odjąć dni robocze, należy użyć liczby ujemnej w dni argument.
Załóżmy, że masz datę początkową w komórce A2, listę świąt w komórkach B2:B5 i chcesz poznać daty 30 dni roboczych w przyszłości i w przeszłości. Możesz to zrobić za pomocą następujących formuł:
Aby dodać 30 dni roboczych do daty rozpoczęcia, z wyłączeniem świąt w B2:B5:
=WORKDAY(A2, 30, B2:B5)
Aby odjąć 30 dni roboczych od daty rozpoczęcia, z wyłączeniem dni wolnych od pracy w B2:B5:
=WORKDAY(A2, -30, B2:B5)
Aby obliczyć dni tygodnia na podstawie aktualna data , jako daty początkowej użyj funkcji TODAY():
Aby dodać 30 dni roboczych do dzisiejszej daty:
=WORKDAY(TODAY(), 30)
Aby odjąć 30 dni roboczych od dzisiejszej daty:
=WORKDAY(TODAY(), -30)
Aby dostarczyć datę początkową bezpośrednio do formuły, należy użyć funkcji DATE:
=WORKDAY(DATE(2015,5,6), 30)
Poniższy zrzut ekranu demonstruje wyniki wszystkich tych i kilku innych formuł WORKDAY:
I oczywiście możesz wpisać w jakiejś komórce liczbę dni roboczych, które mają być dodane do / odjęte od daty rozpoczęcia, a następnie odwołać się do tej komórki w swojej formule. Na przykład:
= DZIEŃ ROBOCZY(A2, C2)
Gdzie A2 jest datą początkową, a C2 jest liczbą dni nieweekendowych za (liczby ujemne) lub przed (liczby dodatnie) datą początkową, bez świąt do wykluczenia.
Porada W programie Excel 365 i 2021 można użyć WORKDAY w połączeniu z SEQUENCE, aby wygenerować serię dni roboczych.
Funkcja WORKDAY.INTL w programie Excel
WORKDAY.INTL jest bardziej zaawansowaną modyfikacją funkcji WORKDAY, która pracuje z niestandardowe parametry weekendowe Podobnie jak WORKDAY, zwraca datę, która jest określoną liczbą dni roboczych w przyszłości lub w przeszłości, ale pozwala określić, które dni tygodnia powinny być uważane za dni weekendowe.
Funkcja WORKDAY.INTL została wprowadzona w Excelu 2010, a więc nie jest dostępna we wcześniejszych wersjach Excela.
Składnia funkcji WORKDAY.INTL w Excelu jest następująca:
WORKDAY.INTL(start_data, dni, [weekend], [święta])Pierwsze dwa argumenty są wymagane i są podobne do WORKDAY:
Początek_daty - data początkowa.
Dni - liczba dni roboczych przed (wartość ujemna) lub po (wartość dodatnia) dacie początkowej.Jeśli dni
argument jest podany jako liczba dziesiętna, jest on obcinany do liczby całkowitej.
Dwa ostatnie argumenty są opcjonalne:
Weekend - Określa, które dni tygodnia powinny być liczone jako dni weekendowe. Może to być zarówno liczba, jak i ciąg znaków, jak pokazano poniżej.
Numer | 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 w niedzielę |
12 | Tylko w poniedziałek |
13 | Tylko we wtorek |
14 | Tylko w środę |
15 | Tylko w czwartek |
16 | Tylko w piątek |
17 | Tylko w sobotę |
Weekendowy ciąg - seria siedmiu 0 i 1, które reprezentują siedem dni tygodnia, począwszy od poniedziałku. 1 oznacza dzień wolny od pracy, a 0 oznacza dzień roboczy. Na przykład:
- "0000011" - sobota i niedziela są weekendami.
- "1000001" - poniedziałek i niedziela to weekendy.
Na pierwszy rzut oka ciągi weekendowe mogą wydawać się zbędne, ale osobiście bardziej lubię tę metodę, ponieważ możesz zrobić ciąg weekendowy w locie, bez konieczności pamiętania jakichkolwiek liczb.
Wakacje - opcjonalna lista dat, które chcesz wykluczyć z kalendarza dni roboczych. Może to być zakres komórek zawierających daty lub stała tablicowa wartości seryjnych reprezentujących te daty.
Używanie WORKDAY.INTL w Excelu - przykłady formuł
Cóż, całkiem spora część teorii, którą właśnie omówiliśmy, może wydawać się dość skomplikowana i zagmatwana, ale spróbowanie swoich sił w formułach naprawdę ułatwi sprawę.
Na naszym zbiorze danych, z datą rozpoczęcia w komórce A2 i listą świąt w A5:A8, obliczmy dni robocze z niestandardowymi weekendami.
Do dodać 30 dni roboczych do daty rozpoczęcia, piątek i sobota liczone jako weekendy i święta w A5:A8 wyłączone:
=WORKDAY.INTL(A2, 30, 7, A5:A8)
lub
=WORKDAY.INTL(A2, 30, "0000110", A5:A8)
Do odjąć 30 dni roboczych od daty rozpoczęcia, niedziela i poniedziałek liczone jako weekendy i święta w A5:A8 wyłączone:
=WORKDAY.INTL(A2, -30, 2, A5:A8)
lub
=WORKDAY.INTL(A2, -30, "1000001", A5:A8)
Aby dodać 10 dni roboczych do aktualna data , niedziela jako jedyny dzień weekendowy, bez świąt:
=WORKDAY.INTL(TODAY(), 10, 11)
lub
=WORKDAY.INTL(A2, 10, "0000001")
W Twoim arkuszu Excel formuły mogą wyglądać podobnie do tego:
Uwaga. Obie funkcje Excela WORKDAY i WORKDAY.INTL zwracają liczby porządkowe reprezentujące daty. Aby uzyskać te liczby wyświetlane jako daty, należy zaznaczyć komórki z liczbami i nacisnąć Ctrl+1, aby otworzyć okno dialogowe Formatuj komórki dialog. na Numer zakładka, wybierz Data w Kategoria listę i wybierz żądany format daty. Szczegółowe kroki znajdziesz w rozdziale Jak zmienić format daty w programie Excel.
Błędy programu Excel WORKDAY i WORKDAY.INTL
Jeśli Twoja formuła WORKDAY lub WORKDAY.INTL w Excelu zwraca błąd, przyczyną jest prawdopodobnie jedna z poniższych:
#NUM! błąd występuje, jeśli:
- połączenie
początek_daty
orazdni
w wyniku czego otrzymujemy niepoprawną datę, lub weekend
argument w funkcji WORKDAY.INTL jest nieprawidłowy.
#VALUE! błąd występuje, jeśli:
początek_daty
lub dowolną wartość wświęta
nie jest ważną datą, lubdni
argument jest nie-numeryczny.
Funkcja Excel NETWORKDAYS
Funkcja NETWORKDAYS w Excelu zwraca liczbę dni roboczych między dwiema datami, z wyłączeniem weekendów i, opcjonalnie, określonych przez użytkownika świąt.
Składnia programu Excel NETWORKDAYS jest intuicyjna i łatwa do zapamiętania:
NETWORKDAYS(begin_date, end_date, [holidays])Pierwsze dwa argumenty są obowiązkowe, a trzeci jest opcjonalny:
- Początek_daty - data początkowa, od której należy zacząć liczyć dni robocze.
- Koniec_daty - koniec okresu, za który liczone są dni robocze.
Zarówno data początkowa jak i końcowa są wliczane do zwracanej liczby dni roboczych.
- Wakacje - opcjonalna lista świąt, które nie powinny być liczone jako dni robocze.
Jak używać NETWORKDAYS w Excelu - przykład formuły
Powiedzmy, że masz listę świąt w komórkach A2:A5, daty rozpoczęcia w kolumnie B, daty zakończenia w kolumnie C i chcesz wiedzieć, ile dni roboczych jest pomiędzy tymi datami. Odpowiednia formuła NETWORKDAYS jest łatwa do rozgryzienia:
=NETWORKDAYS(B2, C2, $A$2:$A$5)
Zauważ, że funkcja Excel NETWORKDAYS zwraca wartość dodatnią, gdy data początkowa jest mniejsza niż data końcowa, a wartość ujemną, gdy data końcowa jest bardziej aktualna niż data początkowa (jak w wierszu 5):
Funkcja Excel NETWORKDAYS.INTL
Podobnie jak NETWORKDAYS, funkcja NETWORKDAYS.INTL programu Excel oblicza liczbę dni tygodnia między dwiema datami, ale pozwala określić, które dni powinny być liczone jako dni weekendowe.
Składnia funkcji NETWORKDAYS.INTL jest bardzo podobna do NETWORKDAYS', z tym że posiada dodatkowy parametr [weekend], który wskazuje, które dni tygodnia powinny być liczone jako weekendy.
NETWORKDAYS.INTL( start_data, end_data, [weekend], [święta] ) Na stronie weekend
argument może przyjąć liczbę lub łańcuch. Liczby i łańcuchy weekendowe są dokładnie takie same jak w weekend
parametr funkcji WORKDAY.INTL.
Funkcja NETWORKDAYS.INTL jest dostępna w programie Excel 365 - 2010.
Użycie NETWORKDAYS.INTL w Excelu - przykład formuły
Korzystając z listy dat z poprzedniego przykładu, obliczmy liczbę dni roboczych pomiędzy dwiema datami, w których jedynym dniem roboczym jest niedziela. W tym celu w polu wyszukiwania wpiszemy liczbę 11. weekend
argumentu formuły NETWORKDAYS.INTL lub zrobić ciąg sześciu 0 i jednej 1 ("0000001"):
=NETWORKDAYS.INTL(B2, C2, 11, $A$2:$A$5)
Albo
=NETWORKDAYS.INTL(B2, C2, "0000001", $A$2:$A$5)
Poniższy zrzut ekranu dowodzi, że obie formuły zwracają absolutnie identyczne wyniki.
Jak wyróżnić dni robocze w programie Excel
Za pomocą funkcji WORKDAY i WORKDAY.INTL można nie tylko obliczać dni robocze w arkuszach Excela, ale także wyróżniać je zgodnie z logiką biznesową. W tym celu tworzy się regułę formatowania warunkowego z formułą WORKDAY lub WORKDAY.INTL.
Na przykład na liście dat w kolumnie B zaznaczmy tylko przyszłe daty, które są w ciągu 15 dni roboczych od dzisiejszej daty, z wyłączeniem dwóch świąt w komórkach A2:A3. Najbardziej oczywista formuła, która przychodzi do głowy, jest następująca:
=AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3))
W pierwszej części testu logicznego odcinasz daty przeszłe, czyli sprawdzasz, czy data jest równa lub większa od dzisiejszej: $B2>TODAY(). Natomiast w drugiej części sprawdzasz, czy data jest nie dalej niż 15 dni roboczych w przyszłości, z wyłączeniem dni weekendowych i określonych świąt: $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3)
Formuła wygląda poprawnie, ale gdy stworzysz na jej podstawie regułę, zorientujesz się, że podkreśla ona błędne daty:
Spróbujmy zastanowić się, dlaczego tak się dzieje. Problem nie leży po stronie funkcji WORKDAY, jak ktoś może wywnioskować. Funkcja jest poprawna, ale... co właściwie robi? Zwraca datę 15 dni roboczych od teraz, z wyłączeniem dni weekendowych (sobota i niedziela) oraz świąt w komórkach A2:A3.
No dobrze, a co robi reguła oparta na tej formule? Podświetla WSZYSTKIE daty, które są równe lub większe od dzisiejszej i mniejsze od daty zwróconej przez funkcję PRACA. Widzisz, wszystkie daty! Jeśli nie chcesz kolorować weekendów i świąt, to musisz wyraźnie powiedzieć Excelowi, żeby tego nie robił. Dodajemy więc do naszej formuły jeszcze dwa warunki:
- Funkcja WEEKDAY do wykluczenia weekendów: WEEKDAY($B2, 2)<6
- Funkcja COUNTIF do wykluczenia świąt: COUNTIF($A$2:$A$3, $B2)=0
Jak pokazano na poniższym zrzucie ekranu, poprawiona formuła działa doskonale:
=AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3), COUNTIF($A$2:$A$3, $B2)=0, WEEKDAY($B2, 2)<6)
Jak widzisz, funkcje WORKDAY i WORKDAY.INTL sprawiają, że obliczanie dni roboczych w Excelu jest szybkie i łatwe. Oczywiście, twoje rzeczywiste formuły prawdopodobnie będą bardziej wyrafinowane, ale znajomość podstaw pomaga ogromnie, ponieważ możesz zapamiętać tylko mały zestaw istotnych rzeczy i wyprowadzić resztę. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu w przyszłym tygodniu!