Съдържание
В този кратък урок се обяснява използването на функциите NETWORKDAYS и WORKDAY на Excel за изчисляване на работни дни с потребителски параметри за почивни дни и празници.
Microsoft Excel предоставя две функции, специално разработени за изчисляване на работните дни - WORKDAY и NETWORKDAYS.
Сайтът РАБОТЕН ДЕН функцията връща дата N работни дни в бъдещето или в миналото и можете да я използвате, за да добавяте или изваждате работни дни към дадена дата.
Използване на НЕТУРНИ ДНИ можете да изчислите броя на работните дни между две посочени от вас дати.
В Excel 2010 и по-нови версии са налични по-мощни модификации на гореспоменатите функции - WORKDAY.INTL и NETWORKDAYS.INTL, които ви позволяват да определите кои и колко дни са почивни.
А сега нека разгледаме по-подробно всяка функция и да видим как можете да я използвате за изчисляване на работните дни в работните си листове на Excel.
Функция WORKDAY на Excel
Функцията WORKDAY на Excel връща дата, която е даден брой работни дни преди или преди началната дата. Тя изключва почивните дни, както и всички празници, които сте посочили.
Функцията WORKDAY е предназначена за изчисляване на работните дни, етапите и сроковете за изпълнение въз основа на стандартния работен календар, като събота и неделя са дните на уикенда.
WORKDAY е вградена функция в Excel 2007 - 365. В по-ранните версии трябва да активирате Analysis ToolPak.
Когато използвате WORKDAY в Excel, трябва да въведете следните аргументи:
WORKDAY(start_date, days, [holidays])Първите два аргумента са задължителни, а последният е незадължителен:
- Начална_дата - датата, от която да започне броенето на работните дни.
- Дни - броят на работните дни, които да се добавят към/отнемат от start_date. Положително число връща бъдеща дата, а отрицателно - минала дата.
- Празници - незадължителен списък с дати, които не трябва да се отчитат като работни дни. Това може да бъде или диапазон от клетки, съдържащ датите, които искате да изключите от изчисленията, или константа на масив от серийни номера, представляващи датите.
След като вече знаете основите, нека видим как можете да използвате функцията WORKDAY в работните си листове на Excel.
Как да използвате WORKDAY за добавяне/отчитане на работни дни към датата
За да изчислите работните дни в Excel, следвайте следните прости правила:
- За добавете работни дни, въведете положително число като дни аргумент на формула WORKDAY.
- За изваждане работни дни, използвайте отрицателно число в дни аргумент.
Да предположим, че имате начална дата в клетка A2, списък с празници в клетки B2:B5 и искате да откриете датите на 30 работни дни в бъдещето и миналото. Можете да направите това, като използвате следните формули:
Добавяне на 30 работни дни към началната дата, с изключение на празниците в B2:B5:
=РАБОТЕН ДЕН(A2, 30, B2:B5)
Да се извадят 30 работни дни от началната дата, с изключение на празниците в B2:B5:
=РАБОТЕН ДЕН(A2, -30, B2:B5)
Изчисляване на работните дни въз основа на текуща дата , използвайте функцията TODAY() като начална дата:
За да добавите 30 работни дни към днешната дата:
=РАБОТЕН ДЕН(TODAY(), 30)
За да извадите 30 работни дни от днешната дата:
=РАБОТЕН ДЕН(TODAY(), -30)
За да въведете началната дата директно във формулата, използвайте функцията DATE:
=РАБОТЕН ДЕН(DATE(2015,5,6), 30)
Следващата снимка на екрана показва резултатите от всички тези и още няколко формули WORKDAY:
И естествено, можете да въведете броя на работните дни, които да прибавите към/отнемете от началната дата, в някоя клетка и след това да се позовете на тази клетка във формулата си. Например:
=РАБОТЕН ДЕН(A2, C2)
Където А2 е началната дата, а С2 е броят на дните извън края на седмицата след (отрицателни числа) или преди (положителни числа) началната дата, без да се изключват празници.
Съвет: В Excel 365 и 2021 можете да използвате WORKDAY в комбинация с SEQUENCE, за да генерирате поредица от работни дни.
Функция WORKDAY.INTL на Excel
WORKDAY.INTL е по-мощна модификация на функцията WORKDAY, която работи с потребителски параметри на уикенда Както и WORKDAY, тя връща дата, която е определен брой работни дни в бъдещето или в миналото, но ви позволява да определите кои дни от седмицата да се считат за почивни дни.
Функцията WORKDAY.INTL беше въведена в Excel 2010 и не е налична в по-ранните версии на Excel.
Синтаксисът на функцията WORKDAY.INTL на Excel е следният:
WORKDAY.INTL(start_date, days, [weekend], [holidays])Първите два аргумента са задължителни и са подобни на аргументите на WORKDAY:
Начална_дата - началната дата.
Дни - броят на работните дни преди (отрицателна стойност) или след (положителна стойност) началната дата. дни
се подава като десетично число, то се съкращава до цяло число.
Последните два аргумента не са задължителни:
Уикенд - определя кои дни от седмицата да се считат за почивни дни. Това може да бъде число или низ, както е показано по-долу.
Номер | Дни на уикенда |
1 или пропуснато | събота, неделя |
2 | неделя, понеделник |
3 | Понеделник, вторник |
4 | Вторник, сряда |
5 | Сряда, четвъртък |
6 | Четвъртък, петък |
7 | Петък, събота |
11 | Само в неделя |
12 | Само в понеделник |
13 | Само във вторник |
14 | Само в сряда |
15 | Само в четвъртък |
16 | Само в петък |
17 | Само в събота |
Нишка за уикенда - поредица от седем цифри 0 и 1, които представляват седем дни от седмицата, като се започне от понеделник. 1 представлява неработен ден, а 0 - работен ден:
- "0000011" - Събота и неделя са почивни дни.
- "1000001" - Понеделник и неделя са почивни дни.
На пръв поглед низовете за уикенд може да изглеждат излишни, но лично на мен този метод ми харесва повече, защото можете да създадете низ за уикенд в движение, без да се налага да помните някакви числа.
Празници - незадължителен списък с дати, които искате да изключите от календара на работните дни. Това може да бъде диапазон от клетки, съдържащи датите, или константа на масив от серийни стойности, представляващи тези дати.
Използване на WORKDAY.INTL в Excel - примери за формули
Е, доста голямата част от теорията, която току-що обсъдихме, може да изглежда доста сложна и объркваща, но ако се опитате да използвате формулите, нещата ще станат много по-лесни.
В нашия набор от данни с начална дата в клетка A2 и списък с празници в A5:A8 нека изчислим работните дни с потребителски почивни дни.
За добавете 30 работни дни до началната дата, като петък и събота се считат за почивни дни, а празниците в A5:A8 са изключени:
=WORKDAY.INTL(A2, 30, 7, A5:A8)
или
=WORKDAY.INTL(A2, 30, "0000110", A5:A8)
За изваждане 30 работни дни от началната дата, като неделя и понеделник се считат за почивни дни, а празниците в A5:A8 са изключени:
=WORKDAY.INTL(A2, -30, 2, A5:A8)
или
=WORKDAY.INTL(A2, -30, "1000001", A5:A8)
За да добавите 10 работни дни към текуща дата , неделя е единственият почивен ден, без празници:
=WORKDAY.INTL(TODAY(), 10, 11)
или
=WORKDAY.INTL(A2, 10, "0000001")
Във вашия лист на Excel формулите могат да изглеждат по следния начин:
Забележка. И двете функции на Excel WORKDAY и WORKDAY.INTL връщат серийни числа, представляващи датите. За да се покажат тези числа като дати, изберете клетките с числата и натиснете Ctrl+1, за да отворите Форматиране на клетките диалогов прозорец. В Номер таб, изберете Дата в Категория и изберете желания формат на датата. За подробни стъпки вижте Как да промените формата на датата в Excel.
Грешки на Excel WORKDAY и WORKDAY.INTL
Ако формулата WORKDAY или WORKDAY.INTL на Excel връща грешка, причината вероятно е една от следните:
#NUM! грешка възниква, ако:
- комбинация от
start_date
идни
води до невалидна дата, или уикенд
аргументът във функцията WORKDAY.INTL е невалиден.
#VALUE! грешка възниква, ако:
start_date
или всяка стойност впразници
не е валидна дата, илидни
аргументът е нецифров.
Функция NETWORKDAYS на Excel
Функцията NETWORKDAYS в Excel връща броя на работните дни между две дати, като се изключват почивните дни и, по избор, зададените от вас празници.
Синтаксисът на Excel NETWORKDAYS е интуитивен и лесен за запомняне:
NETWORKDAYS(start_date, end_date, [holidays])Първите два аргумента са задължителни, а третият - незадължителен:
- Начална_дата - начална дата, от която започва да се отчитат работните дни.
- End_date - края на периода, за който се отчитат работните дни.
Както началната, така и крайната дата се отчитат във върнатия брой работни дни.
- Празници - незадължителен списък с празнични дни, които не трябва да се отчитат като работни дни.
Как да използвате NETWORKDAYS в Excel - пример за формула
Да речем, че имате списък с празници в клетките A2:A5, начални дати в колона B, крайни дати в колона C и искате да знаете колко работни дни има между тези дати. Лесно е да се определи подходящата формула NETWORKDAYS:
=NETWORKDAYS(B2, C2, $A$2:$A$5)
Забележете, че функцията NETWORKDAYS на Excel връща положителна стойност, когато началната дата е по-малка от крайната, и отрицателна стойност, ако крайната дата е по-късна от началната (както в ред 5):
Функция NETWORKDAYS.INTL на Excel
Подобно на NETWORKDAYS, функцията NETWORKDAYS.INTL на Excel изчислява броя на работните дни между две дати, но ви позволява да посочите кои дни да се считат за почивни.
Синтаксисът на функцията NETWORKDAYS.INTL е много сходен с този на NETWORKDAYS, с изключение на допълнителния параметър [weekend], който указва кои дни от седмицата трябва да се считат за почивни.
NETWORKDAYS.INTL( start_date, end_date, [weekend], [holidays] ) Сайтът уикенд
аргумент може да приеме число или низ. Числата и низовете от уикенда са точно същите като в уикенд
параметър на функцията WORKDAY.INTL.
Функцията NETWORKDAYS.INTL е налична в Excel 365 - 2010.
Използване на NETWORKDAYS.INTL в Excel - пример за формула
Използвайки списъка с дати от предишния пример, нека изчислим броя на работните дни между две дати, като неделя е единственият почивен ден. За целта въведете числото 11 в полето уикенд
аргумент на формулата NETWORKDAYS.INTL или направете низ от шест нули и една единица ("0000001"):
=NETWORKDAYS.INTL(B2, C2, 11, $A$2:$A$5)
Или
=NETWORKDAYS.INTL(B2, C2, "0000001", $A$2:$A$5)
Следната снимка на екрана доказва, че двете формули дават абсолютно идентични резултати.
Как да подчертаете работните дни в Excel
С помощта на функциите WORKDAY и WORKDAY.INTL можете не само да изчислявате работните дни в работните си листове в Excel, но и да ги подчертавате, както изисква бизнес логиката ви. За целта създавате правило за условно форматиране с формула WORKDAY или WORKDAY.INTL.
Например в списъка с дати в колона В нека подчертаем само бъдещите дати, които са в рамките на 15 работни дни от днешната дата, с изключение на двата празника в клетките А2:А3.Най-очевидната формула, която идва на ум, е следната:
=AND($B2>ДНЕС(), $B2<=Работен ден(ДНЕС(), 15, $A$2:$A$3))
В първата част на логическия тест се отрязват минали дати, т.е. проверява се дали датата е равна или по-голяма от днес: $B2>TODAY(). А във втората част се проверява дали датата е не повече от 15 работни дни в бъдещето, като се изключват дните от уикенда и посочените празници: $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3)
Формулата изглежда правилна, но след като създадете правило въз основа на нея, ще разберете, че тя подчертава грешни дати:
Нека се опитаме да разберем защо това се случва. Проблемът не е във функцията WORKDAY, както някой може да заключи. Функцията е правилна, но... какво всъщност прави? Тя връща дата за 15 работни дни от сега, като изключва почивните дни (събота и неделя) и празниците в клетките A2:A3.
Добре, а какво прави правилото, базирано на тази формула? То подчертава ВСИЧКИ дати, които са равни или по-големи от днес и по-малки от датата, върната от функцията WORKDAY. Виждате ли? Всички дати! Ако не искате да оцветявате почивните и празничните дни, трябва изрично да кажете на Excel да не го прави. Затова добавяме още две условия към нашата формула:
- Функцията WEEKDAY за изключване на почивните дни: WEEKDAY($B2, 2)<6
- Функцията COUNTIF за изключване на празници: COUNTIF($A$2:$A$3, $B2)=0
Както е показано на снимката по-долу, подобрената формула работи перфектно:
=AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3), COUNTIF($A$2:$A$3, $B2)=0, WEEKDAY($B2, 2)<6)
Както виждате, функциите WORKDAY и WORKDAY.INTL правят изчисляването на работните дни в Excel бързо и лесно. Разбира се, формулите в реалния ви живот вероятно ще бъдат по-сложни, но познаването на основите помага изключително много, защото можете да запомните само малък набор от съществени неща, а останалите да изведете. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!