Функции Excel WORKDAY и NETWORKDAYS для расчета рабочих дней

  • Поделись Этим
Michael Brown

Этот краткий учебник объясняет использование функций Excel NETWORKDAYS и WORKDAY для расчета рабочих дней с пользовательскими параметрами выходных и праздников.

Microsoft Excel предоставляет две функции, специально разработанные для вычисления дней недели - WORKDAY и NETWORKDAYS.

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

Использование NETWORKDAYS функция позволяет рассчитать количество рабочих дней между двумя указанными вами датами.

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

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

    Функция Excel WORKDAY

    Функция Excel WORKDAY возвращает дату, которая находится на заданное количество рабочих дней раньше или раньше начальной даты. Она исключает выходные дни, а также любые указанные вами праздники.

    Функция WORKDAY предназначена для расчета рабочих дней, этапов и сроков выполнения работ на основе стандартного рабочего календаря, где суббота и воскресенье являются выходными днями.

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

    При использовании WORKDAY в Excel необходимо ввести следующие аргументы:

    WORKDAY(начальная_дата, дни, [праздники])

    Первые 2 аргумента являются обязательными, а последний - необязательным:

    • Начальная_дата - дата, с которой начинается отсчет дней недели.
    • Дни - количество рабочих дней, которое нужно прибавить к дате начала_даты / вычесть из нее. Положительное число возвращает будущую дату, отрицательное - прошедшую.
    • Праздники - необязательный список дат, которые не должны учитываться как рабочие дни. Это может быть либо диапазон ячеек, содержащих даты, которые вы хотите исключить из расчетов, либо константа массива из порядковых номеров, представляющих даты.

    Теперь, когда вы знаете основы, давайте посмотрим, как можно использовать функцию 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 рабочих дней к сегодняшней дате:

    = РАБОЧИЙ ДЕНЬ(СЕГОДНЯ(), 30)

    Вычесть 30 рабочих дней из сегодняшней даты:

    = РАБОЧИЙ ДЕНЬ(СЕГОДНЯ(), -30)

    Чтобы ввести дату начала непосредственно в формулу, используйте функцию DATE:

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

    Следующий скриншот демонстрирует результаты всех этих и еще нескольких формул WORKDAY:

    И естественно, вы можете ввести количество рабочих дней для прибавления / вычитания из даты начала в некоторой ячейке, а затем сослаться на эту ячейку в вашей формуле. Например:

    = РАБОЧИЙ ДЕНЬ(A2, C2)

    Где A2 - дата начала, а C2 - количество не выходных дней, отстающих (отрицательные числа) или опережающих (положительные числа) дату начала, без исключения праздничных дней.

    Совет. В Excel 365 и 2021 можно использовать WORKDAY в сочетании с SEQUENCE для создания серии рабочих дней.

    Функция Excel WORKDAY.INTL

    WORKDAY.INTL - это более мощная модификация функции WORKDAY, которая работает с пользовательские параметры выходных Как и WORKDAY, он возвращает дату, которая является заданным количеством рабочих дней в будущем или в прошлом, но позволяет определить, какие дни недели следует считать выходными.

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

    Синтаксис функции Excel WORKDAY.INTL следующий:

    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 исключены:

    =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

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

    #NUM! ошибка возникает, если либо:

    • сочетание дата начала и дней аргументы приводят к недостоверной дате, или
    • выходные аргумент в функции WORKDAY.INTL недействителен.

    #VALUE! ошибка возникает, если либо:

    • дата начала или любое значение в праздники не является действительной датой, или
    • дней аргумент не является числовым.

    Функция Excel NETWORKDAYS

    Функция NETWORKDAYS в Excel возвращает количество рабочих дней между двумя датами, исключая выходные и, по желанию, указанные вами праздники.

    Синтаксис Excel NETWORKDAYS интуитивно понятен и легко запоминается:

    NETWORKDAYS(начальная_дата, конечная_дата, [праздники])

    Первые два аргумента являются обязательными, а третий - необязательным:

    • Начальная_дата - начальная дата, с которой начинается отсчет рабочих дней.
    • Конечная_дата - конец периода, за который вы считаете рабочие дни.

    И дата начала, и дата окончания учитываются в возвращаемом количестве рабочих дней.

    • Праздники - необязательный список праздников, которые не должны учитываться как рабочие дни.

    Как использовать NETWORKDAYS в Excel - пример формулы

    Допустим, у вас есть список праздников в ячейках A2:A5, даты начала в столбце B, даты окончания в столбце C, и вы хотите узнать, сколько рабочих дней между этими датами. Соответствующую формулу NETWORKDAYS легко вычислить:

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

    Обратите внимание, что функция Excel NETWORKDAYS возвращает положительное значение, если дата начала меньше даты окончания, и отрицательное значение, если дата окончания более поздняя, чем дата начала (как в строке 5):

    Функция Excel NETWORKDAYS.INTL

    Как и функция NETWORKDAYS, функция Excel NETWORKDAYS.INTL подсчитывает количество дней недели между двумя датами, но позволяет указать, какие дни следует считать выходными.

    Синтаксис функции 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.

    Например, в списке дат в столбце B выделим только те будущие даты, которые находятся в пределах 15 рабочих дней от сегодняшней даты, исключая два праздничных дня в ячейках A2:A3. Наиболее очевидная формула, которая приходит на ум, выглядит следующим образом:

    =AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 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. Конечно, в реальной жизни ваши формулы, скорее всего, будут более сложными, но знание основ очень помогает, потому что вы можете запомнить только небольшой набор необходимых вещей и вывести все остальное. Я благодарю вас за чтение и надеюсь увидеть в нашем блоге на следующей неделе!

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.