Функції Excel WORKDAY і NETWORKDAYS для розрахунку робочих днів

  • Поділитися Цим
Michael Brown

У цьому короткому навчальному посібнику пояснюється використання функцій СЕТЬ РОБОЧИХ ДНЕЙ і РОБОЧИЙ ДЕНЬ в Excel для розрахунку робочих днів з користувацькими параметрами вихідних і святкових днів.

В Microsoft Excel передбачено дві функції, спеціально призначені для підрахунку робочих днів - WORKDAY і NETWORKDAY.

На сьогоднішній день, на жаль, це не так. РОБОЧИЙ ДЕНЬ повертає дату N робочих днів у майбутньому або в минулому, і ви можете використовувати її для додавання або віднімання робочих днів до заданої дати.

За допомогою РОБОЧІ ДНІ можна порахувати кількість робочих днів між двома датами, які ви вказуєте.

В Excel 2010 і вище доступні більш потужні модифікації вищезгаданих функцій - WORKDAY.INTL і NETWORKDAYS.INTL, які дозволяють визначати, які і скільки днів є вихідними.

А тепер давайте детальніше розглянемо кожну функцію і подивимося, як її можна використовувати для підрахунку робочих днів у ваших таблицях Excel.

    Функція WORKDAY в Excel

    Функція РОБОЧИЙ ДЕНЬ Excel повертає дату, яка на задану кількість робочих днів випереджає або передує даті початку. Вона виключає вихідні, а також будь-які зазначені вами святкові дні.

    Функція РОБОЧИЙ ДЕНЬ призначена для розрахунку робочих днів, етапів і термінів виконання на основі стандартного робочого календаря, при цьому субота і неділя є вихідними днями.

    WORKDAY є вбудованою функцією в Excel 2007 - 365. У більш ранніх версіях необхідно включити Analysis ToolPak.

    При використанні WORKDAY в Excel необхідно ввести наступні аргументи:

    WORKDAY(дата_початку, дні, [свята])

    Перші 2 аргументи є обов'язковими, а останній - необов'язковим:

    • Дата_початку - дата, з якої починається відлік робочих днів.
    • Дні - кількість робочих днів, які потрібно додати до / відняти від start_date. Додатне число повертає майбутню дату, від'ємне число - минулу дату.
    • Святкові дні - необов'язковий список дат, які не повинні враховуватися як робочі дні. Це може бути або діапазон комірок, що містить дати, які потрібно виключити з розрахунків, або константа масиву з порядковими номерами, що представляють ці дати.

    Тепер, коли ви знаєте основи, давайте подивимося, як ви можете використовувати функцію РОБОЧИЙ ДЕНЬ у своїх робочих аркушах Excel.

    Як використовувати WORKDAY для додавання/віднімання робочих днів до дати

    Щоб розрахувати робочі дні в Excel, дотримуйтесь цих простих правил:

    • До додавати робочих днів, введіть додатне число в якості дні аргумент формули WORKDAY.
    • До відняти робочих днів, використовуйте від'ємне число в дні аргумент.

    Припустимо, у вас є дата початку в комірці А2, список святкових днів у комірках В2:В5, і ви хочете дізнатися дати на 30 робочих днів у майбутньому і минулому. Зробити це можна за допомогою наступних формул:

    Додати 30 робочих днів до дати початку, не враховуючи святкові дні у В2:В5:

    =WORKDAY(A2, 30, B2:B5)

    Від дати початку відняти 30 робочих днів, за винятком святкових днів у B2:B5:

    =WORKDAY(A2, -30, B2:B5)

    Для розрахунку робочих днів на основі поточна дата в якості дати початку використовуйте функцію TODAY():

    До сьогоднішньої дати додати 30 робочих днів:

    =WORKDAY(TODAY(), 30)

    Від сьогоднішньої дати відняти 30 робочих днів:

    =WORKDAY(TODAY(), -30)

    Для того, щоб ввести дату початку безпосередньо у формулу, використовуйте функцію ДАТА:

    = РОБОЧИЙ ДЕНЬ(ДАТА(2015,5,6), 30)

    Наступний скріншот демонструє результати всіх цих та ще кількох формул WORKDAY:

    І, природно, в якусь комірку можна ввести кількість робочих днів, які потрібно додати / відняти від дати початку, і потім посилатися на цю комірку в своїй формулі. Наприклад:

    =WORKDAY(A2, C2)

    Де A2 - дата початку та C2 - кількість неробочих днів після (від'ємні числа) або перед (додатні числа) датою початку, без урахування святкових днів.

    Порада. В Excel 365 і 2021 можна використовувати функцію РОБОЧИЙ ДЕНЬ у поєднанні з функцією ПОСЛІДОВНІСТЬ для створення серії робочих днів.

    Функція Excel WORKDAY.INTL

    WORKDAY.INTL є більш потужною модифікацією функції WORKDAY, яка працює з індивідуальні параметри вихідних днів Як і WORKDAY, повертає дату, яка є вказаною кількістю робочих днів у майбутньому або в минулому, але дозволяє визначити, які дні тижня вважати вихідними днями.

    Функція WORKDAY.INTL була введена в Excel 2010 і тому недоступна в попередніх версіях Excel.

    Синтаксис функції WORKDAY.INTL в Excel наступний:

    WORKDAY.INTL(дата_початку, дні, [вихідні], [святкові])

    Перші два аргументи є обов'язковими і нагадують 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, за винятком вихідних та святкових днів у форматі A5:A8:

    = РОБОЧИЙ ДЕНЬ.INTL(A2, 30, 7, A5:A8)

    або

    = WORKDAY.INTL(A2, 30, "0000110", A5:A8)

    До відняти 30 робочих днів з дати початку, неділя та понеділок вважаються вихідними та святковими днями в форматах A5:A8, за винятком вихідних та святкових днів у форматах A5:A8:

    = РОБОЧИЙ ДЕНЬ.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.

    Помилки Excel WORKDAY та WORKDAY.INTL

    Якщо ваша формула Excel WORKDAY або WORKDAY.INTL повертає помилку, причина, ймовірно, одна з наступних:

    #НУМ! виникає помилка, якщо або те, або інше:

    • поєднання дата_початку і дні аргументів призводить до недійсної дати, або
    • вихідні у функції WORKDAY.INTL є недопустимим.

    #ЦІННІСТЬ! виникає помилка, якщо або те, або інше:

    • дата_початку або будь-яку цінність в канікули не є дійсною датою, або
    • дні аргумент не є числовим.

    Функція Excel РОБОЧІ ДНІ

    Функція СРЗНАЧ в Excel повертає кількість робочих днів між двома датами, виключаючи вихідні та, за бажанням, святкові дні, які ви вказуєте.

    Синтаксис таблиць Excel NETWORKDAYS інтуїтивно зрозумілий і легко запам'ятовується:

    РОБОЧІ ДНІ(дата_початку, дата_закінчення, [святкові дні])

    Перші два аргументи є обов'язковими, а третій - необов'язковим:

    • Дата початку - початкова дата, з якої починається відлік робочих днів.
    • Дата закінчення - закінчення періоду, за який ви рахуєте робочі дні.

    Дата початку та дата закінчення враховуються у кількості робочих днів, що повертаються.

    • Святкові дні - необов'язковий перелік святкових днів, які не вважатимуться робочими.

    Як використовувати РОБОЧІ ДНІ в Excel - приклад формули

    Припустимо, у вас є список святкових днів у комірках A2:A5, дати початку в колонці B, дати закінчення в колонці C, і ви хочете дізнатися, скільки робочих днів знаходиться між цими датами. Відповідну формулу СЕТЬРОБОЧИХ ДНІВ легко обчислити:

    =NETWORKDAYS(B2, C2, $A$2:$A$5)

    Зверніть увагу, що функція СЕТЬРОБОЧИХ ДНЕЙ Excel повертає позитивне значення, якщо дата початку менше дати закінчення, і негативне значення, якщо дата закінчення більш пізня, ніж дата початку (як у рядку 5):

    Функція Excel NETWORKDAYS.INTL

    Як і функція РОБОЧІ ДНІ, функція РОБОЧІ ДНІ.ИНТЛ в Excel обчислює кількість робочих днів між двома датами, але дозволяє вказати, які дні слід вважати вихідними днями.

    Синтаксис функції NETWORKDAYS.INTL дуже схожий на NETWORKDAYS, за винятком того, що вона має додатковий параметр [weekend], який вказує, які дні тижня вважати вихідними.

    NETWORKDAYS.INTL( дата_початку, дата_закінчення, [вихідні], [свята] )

    На сьогоднішній день, на жаль, це не так. вихідні може приймати як число, так і рядок. Числа і рядки вихідних точно такі ж, як і в аргументі вихідні параметр функції WORKDAY.INTL.

    Функція NETWORKDAYS.INTL доступна в Excel 365 - 2010.

    Використання NETWORKDAYS.INTL в Excel - приклад формули

    Використовуючи список дат з попереднього прикладу, підрахуємо кількість робочих днів між двома датами, єдиним вихідним днем яких є неділя. Для цього вводимо число 11 в поле вихідні формули NETWORKDAYS.INTL або скласти рядок з шести 0 та однієї 1 ("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)

    Формула виглядає правильно, але як тільки ви створите на її основі правило, то зрозумієте, що вона висвітлює не ті дати:

    Спробуємо розібратися, чому так відбувається. Проблема не у функції РАБОЧИЙ ДЕНЬ, як хтось може зробити висновок. Функція правильна, але... що вона робить насправді? Вона повертає в комірках А2:А3 дату через 15 робочих днів, не враховуючи вихідні (суботу та неділю) та святкові дні.

    Добре, а що робить правило, засноване на цій формулі? Воно виділяє ВСІ дати, які дорівнюють або більші за сьогоднішню і менші за дату, що повертається функцією РАБОЧИЙ ДЕНЬ. Бачите? Всі дати! Якщо ви не хочете виділяти кольором вихідні та святкові дні, то потрібно явно вказати 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 швидким і простим. Звичайно, ваші реальні формули, швидше за все, будуть більш складними, але знання основ дуже допомагає, адже можна запам'ятати лише невеликий набір необхідних речей і вивести решту. Дякую за прочитання і сподіваюся побачити в нашому блозі наступного тижня!

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.