ЧИСТРАБДНИ (функция ЧИСТРАБДНИ)
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше
В этой статье описаны синтаксис формулы и использование функции ЧИСТРАБДНИ в Microsoft Excel.
Описание
Возвращает количество рабочих дней между датами «нач_дата» и «кон_дата». Праздники и выходные в это число не включаются. Функцию ЧИСТРАБДНИ можно использовать для вычисления заработной платы работника на основе количества дней, отработанных в указанный период.
Совет: Чтобы вычислить количество полных рабочих дней между двумя датами с использованием параметров, определяющих количество выходных в неделе и то, какие это дни, используйте функцию ЧИСТРАБДНИ.МЕЖД.
Синтаксис
ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники])
Аргументы функции ЧИСТРАБДНИ описаны ниже.
-
нач_дата — обязательный аргумент. Начальная дата.
-
кон_дата Обязательный. Конечная дата.
-
Праздники Необязательный. Список из одной или нескольких дат, которые требуется исключить из рабочего календаря, например государственные праздники. Список может представлять собой диапазон ячеек, содержащих даты, или константу массива, содержащую числа, которые представляют даты.
Важно: Даты должны быть введены с использованием функции ДАТА или как результат вычисления других формул и функций. Например, для указания даты 23 мая 2012 г. воспользуйтесь выражением ДАТА(2012,5,23). Если ввести даты как текст, это может привести к возникновению проблем.
Замечания
-
В приложении Microsoft Excel даты хранятся в виде последовательных чисел, что позволяет использовать их в вычислениях. По умолчанию 1 января 1900 г. имеет порядковый номер 1, а 1 января 2012 г. — 40909, так как от 1 января 1900 г. он отс0 до 40 909 дней.
-
Если какой-либо из аргументов не является допустимой датой, networkDAYS возвращает #VALUE! значение ошибки #ЗНАЧ!.
Пример
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Дата |
Описание |
|
01.10.2012 |
Дата начала проекта |
|
01.03.2013 |
Дата окончания проекта |
|
22.11.2012 |
Праздник |
|
04.12.2012 |
Праздник |
|
21.01.2012 |
Праздник |
|
Формула |
Описание |
Результат |
=ЧИСТРАБДНИ(A2;A3) |
Число рабочих дней между датой начала (01.10.2012) и датой окончания (01.03.2013). |
110 |
=ЧИСТРАБДНИ(A2;A3;A4) |
Число рабочих дней между датой начала (01.10.2012) и датой окончания (01.03.2013) с вычетом праздничного дня 22.11.2012 как выходного. |
109 |
=ЧИСТРАБДНИ(A2;A3;A4:A6) |
Число рабочих дней между датой начала (01.10.2012) и датой окончания (01.03.2013) с вычетом трех праздничных дней. |
107 |
К началу страницы
Нужна дополнительная помощь?
В Excel есть несколько функций, которые позволяют посчитать количество рабочих дней между двумя датами в excel. О том, как посчитать количество календарных дней между датами, есть отдельная статья.
- Как посчитать количество рабочих дней между двумя датами функцией ЧИСТРАБДНИ
- Функция ЧИСТРАБДНИ.МЕЖД — когда полезно использовать
- Для чего нужны функции РАБДЕНЬ и РАБДЕНЬ.МЕЖД
Как посчитать количество рабочих дней между двумя датами функцией ЧИСТРАБДНИ
Функция ЧИСТРАБДНИ используется в Excel,чтобы посчитать количество рабочих дней между двумя датами.
Синтаксис функции:
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
нач_дата и кон_дата — начальная и конечная даты диапазона. Конечная дата обязательно должна быть больше начальной.
[праздники] — необязательный аргумент, можно отдельно указать ссылку на ячейку или диапазон ячеек, в которых указаны даты праздничных дней. В этом случае excel исключит их из числа рабочих дней, даже если это были будние дни.
Конечно, в качестве аргумента [праздники] можно указывать не только праздничные дни, а любые дни, которые нужно исключить из числа рабочих дней.
Если аргумент [праздники] не указывать, excel по умолчанию посчитает количество рабочих дней между двумя датами без учета праздничных дней, вычтя только субботы и воскресенья.
Рассмотрим пример расчета количества рабочих дней между двумя датами. Для наглядности приведен календарь за данный месяц.
-
Без учета праздников (аргумент [праздники] не указан)
Как видите, формула посчитала количество будних дней (понедельник-пятница), не учитывая, что 2-3 и 9-10 мая — это нерабочие дни в связи с праздниками.
-
С учетом аргумента [праздники]
Чтобы из количества рабочих дней исключить нерабочие праздничные дни (или любые другие дни, которые нужно исключить), сначала нужно сделать отдельный список праздничных дней.
Затем добавим в формулу аргумент [праздники]. Обратите внимание, что ссылки на диапазон лучше закрепить абсолютными ссылками.
Другой вариант — создать именованный диапазон для ячеек с датами праздничных дней. Для этого нужно выделить диапазон ячеек, в поле имени указать нужное имя и нажать Enter.
Теперь, когда будете считать количество рабочих дней между двумя датами с учетом праздников, в качестве аргумента [праздники] можно указать имя диапазона.
Функция ЧИСТРАБДНИ.МЕЖД — когда полезно использовать
Отличие функции ЧИСТРАБДНИ.МЕЖД от функции ЧИСТРАБДНИ: функция ЧИСТРАБДНИ при расчете количества рабочих дней между двумя датами учитывает стандартные выходные дни (суббота и воскресенье). А для функции ЧИСТРАБДНИ.МЕЖД можно задать альтернативные выходные дни.
Поэтому функция ЧИСТРАБДНИ.МЕЖД незаменима для учета отработанных дней при скользящем графике.
Синтаксис функции:
=ЧИСТРАБДНИ.МЕЖД(нач_дата; кон_дата; [выходные]; [праздники])
Аргументы нач_дата, кон_дата и [праздники] — аналогичны функции ЧИСТРАБДНИ.
[выходные] — необязательный аргумент, в котором нужно выбрать код дней недели для выходных дней. Этот аргумент принимает числовой код, в котором зашифрованы дни недели.
Давайте рассмотрим ее на примере. В качестве выходных выберем дни Среда и Четверг.
На календаре зеленым закрашены дни, которые формула посчитала рабочими.
Из диапазона дней между датами 01.05.2022 и 20.05.2022 вычтены праздничные дни (диапазон “праздники” из предыдущего примера) и выходные дни (в данном примере СР и ЧТ).
Для чего нужны функции РАБДЕНЬ и РАБДЕНЬ.МЕЖД
Функция РАБДЕНЬ фактически является зеркальной для функции ЧИСТРАБДНИ:
- результатом функции ЧИСТРАБДНИ является количество рабочих дней между двумя датами
- результатом функции РАБДЕНЬ является дата, отстоящее на заданное число рабочих дней вперед или назад от заданной даты.
Синтаксис функции:
=РАБДЕНЬ(нач_дата; число дней; [праздники])
нач_дата — начальная дата, от которой будет отсчитываться количество рабочих дней
число дней — число рабочих дней, которое будет прибавлено к начальной дате.
[праздники] — так же, как и для функции ЧИСТРАБДНИ можно отдельно указать ссылку на ячейку или диапазон ячеек, в которых указаны даты праздничных дней.
Рассмотрим пример использования функции РАБДЕНЬ. Количество дней укажем 15. Обратите внимание: количество дней мы взяли из результата вычисления функции ЧИСТРАБДНИ, а результат получили равный второму аргументу функции (кон_дата) ЧИСТРАБДНИ — 20.05.2021. Именно поэтому эти функции считаются зеркальными.
Чтобы получить количество дней, отстоящих назад от заданной даты, нужно в качестве количества дней указать отрицательное число. Для указания количества дней, вместо числа, можно указать ссылку на ячейку, содержащую число.
Использование аргумента [праздники] — такое же, как в функции ЧИСТРАБДНИ. Праздники можно указать ссылкой на ячейки или именованным диапазоном.
Пример использования функции РАБДЕНЬ с аргументом [праздники].
Функция РАБДЕНЬ.МЕЖД аналогична функции РАБДЕНЬ, только есть возможность указать альтернативные выходные дни (аналогично функции ЧИСТРАБДНИ.МЕЖД).
Синтаксис функции:
=РАБДЕНЬ.МЕЖД(нач_дата; число дней; [выходные];[праздники])
Числовые коды для аргумента [праздники] аналогичны кодам для функции ЧИСТРАБДНИ.МЕЖД (см. выше в этой статье).
Рассмотрим пример использования функции РАБДЕНЬ.МЕЖД. Начальная дата 01.05.2022, количество дней — 15, в качестве выходных дней укажем аргумент 2 (ВС, ПН), праздники — именованный диапазон “праздники” из предыдущих примеров.
Зеленым цветом закрашены указанное количество рабочих дней — 15. Следовательно, дата, которая отстает от 01.05.2022 на 15 дней с учетом выходных ВС и ПН и праздничных дней — 25.05.2022.
В этой статье мы рассмотрели, как посчитать количество рабочих дней между двумя датами разными способами.
Мы ВКонтакте
Вам может быть интересно:
На чтение 10 мин. Просмотров 13.1k.
Содержание
- Получить дни, месяцы и годы между датами
- Подсчитайте дни недели между датами
- Подсчитывать праздники между двумя датами
- Создание диапазона дат с двух дат
- Получать рабочие часы между датами
- Получать рабочие часы между датами собственного расписания
- Получать рабочие дни между датами
- Список праздников между двумя датами
Получить дни, месяцы и годы между датами
= РАЗНДАТ (начало; конец; «г»)&»годы»; & РАЗНДАТ(начало; конец; «гм») & «месяцы»; & РАЗНДАТ(начало; конец; «мд») & «дни»
Чтобы рассчитать и отобразить время между датами в днях, месяцах и годах, вы можете использовать формулу, основанную на функции РАЗНДАТ.
В показанном примере формула в D5:
= РАЗНДАТ(B5; C5; «г») & «годы»; & РАЗНДАТ(B5; C5; «гм») & «месяцы»; & РАЗНДАТ(B5; C5; «мд») & «дни»
Где даты начала указаны в столбце B, а даты окончания — в столбце C.
Функция РАЗНДАТ предназначена для вычисления разницы между датами в годах, месяцах и днях. Доступны несколько вариантов (например, время в месяцах, время в месяцах без учета дней и лет и т. д.), И они устанавливаются аргументом «единица» в функции.
В показанном примере мы вычисляем отдельно годы, месяцы и дни, затем «склеиваем» результаты вместе с конкатенацией. Чтобы получить целые годы, мы используем:
РАЗНДАТ(B5; C5; «г») и «годы»
Чтобы получить целые месяцы, мы используем:
РАЗНДАТ(B5; C5; «гм») & «месяцы»
И мы вычисляем дни с:
РАЗНДАТ(B5; C5; «мд») & «дни»
Остальная часть формулы — это просто необходимый текст, объединенный с оператором конкатенации (&).
Чтобы предотвратить вывод дней, месяцев или лет с нулевыми значениями, вы можете обернуть каждую функцию РАЗНДАТ внутри ЕСЛИ, как показано здесь (строки, добавленные для удобочитаемости):
=ЕСЛИ(РАЗНДАТ(B5; C5; «г»); РАЗНДАТ (B5; C5; «г») & «годы»; «»)
ЕСЛИ(РАЗНДАТ(B5; C5; «гм»); РАЗНДАТ(B5; C5; «гм») & «месяцы»; «»)
ЕСЛИ(РАЗНДАТ(B5; C5; «мд»); РАЗНДАТ(B5; C5; «мд») & «дни»; «»)
Для предотвращения появления дополнительных запятых в конечном результате запятые заменяются пробелами. Использование исходной формулы РАЗНДАТ как «логического теста» внутри ЕСЛИ работает, потому что ЕСЛИ обрабатывает любой ненулевой результат как истинный.
Подсчитайте дни недели между датами
= СУММПРОИЗВ(- (ДЕНЬНЕД(СТРОКА(ДВССЫЛ (дата1 & «:» & дата2))) = дни))
Чтобы подсчитать количество понедельников, пятниц, воскресений и т. п. между двумя датами, вы можете использовать формулу массива, которая использует несколько функций: СУММПРОИЗВ, ДЕНЬНЕД, СТРОКА и ДВССЫЛ.
В показанном примере формула в ячейке E5 имеет следующий вид:
= СУММПРОИЗВ(- (ДЕНЬНЕД(СТРОКА(ДВССЫЛ(B5 & «:» & C5))) = D5))
В основном эта формула использует функцию ДЕНЬНЕД, чтобы проверить количество дат, чтобы увидеть, попадают ли они в заданный день недели и функцию СУММПРОИЗВ, чтобы подсчитать общее количество.
Когда дана дата, ДЕНЬНЕД просто возвращает число от 1 до 7, соответствующее конкретному дню недели. С настройками по умолчанию: 1 = воскресенье и 7 = суббота. Итак, 2 = понедельник, 6 = пятница и так далее.
Трюк этой формулы заключается в понимании того, что даты в Excel — это только серийные номера, которые начинаются 1 января 1900 года. Например, 1 января 2016 года — это серийный номер 42370, а 8 января — 42377. Даты в Excel выглядят только как даты, когда применяется формат числа даты.
Итак, возникает вопрос — как вы можете построить массив дат, который вы можете использовать в функции ДЕНЬНЕД, чтобы узнать соответствующие дни недели?
Ответ: использовать СТРОКА с ДВССЫЛ следующим образом:
СТРОКА(ДВССЫЛ(дата1 & «:» & дата2))
ДВССЫЛ позволяет связанным датам «42370: 42377» интерпретироваться как номера строк. Затем функция СТРОКА возвращает массив вроде этого:
{42370; 42371; 42372; 42373; 42374; 42375; 42376; 42377}
Функция ДЕНЬНЕД оценивает эти числа как даты и возвращает этот массив:
{6; 7; 1; 2; 3; 4; 5; 6}
Который тестируется на заданный день недели (6 в данном случае, начиная с D6). Как только результаты теста преобразуются в 1 и 0 с двойным дефисами, этот массив обрабатывается СУММПРОИЗВ:
{1; 0; 0; 0; 0; 0; 0; 1}
Который возвращает 2.
Подсчитывать праздники между двумя датами
= СУММПРОИЗВ((праздники> = начало) * (праздники <= конец))
Для подсчета праздничных дней, которые происходят между двумя датами, вы можете использовать функцию СУММПРОИЗВ.
В показанном примере формула в F7:
=СУММПРОИЗВ((B5:B13>=F5)*(B5:B13<=F6))
Эта формула использует два выражения в одном массиве внутри функции СУММПРОИЗВ.
Первое выражение проверяет каждую дату отпуска, чтобы увидеть, больше или равна дате начала в F5:
(B5: B13> = F5)
Это возвращает массив значений ИСТИНА/ЛОЖЬ, например:
{ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА }
Второе выражение проверяет каждую дату отпуска, чтобы увидеть, меньше или равна конечной дате в F6:
(B5: B13 <= F6)
Который возвращает массив значений ИСТИНА/ЛОЖЬ следующим образом:
{ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ИСТИНА; ЛОЖЬ}
Умножение этих двух массивов автоматически присваивает значения ИСТИНА/ЛОЖЬ единицам и нулям, что приводит к массивам, которые выглядят так:
= СУММПРОИЗВ(({0; 0; 0; 0; 1; 1; 1; 1; 1}) * ({1; 1; 1; 1; 1; 1; 1; 1; 0}))
После умножения у нас есть только один массив:
=СУММПРОИЗВ ({0; 0; 0; 0; 1; 1; 1; 1; 0}})
Наконец, СУММПРОИЗВ суммирует элементы в массиве и возвращает 4.
Для подсчета праздничных дней, которые происходят только в рабочие дни (понедельник-пятница), вы можете расширить формулу следующим образом:
=СУММПРОИЗВ ((диап> = F5) * (диап <= F6) * (ДЕНЬНЕД(диап; 2) <6))
Где диап — диапазон, содержащий даты отпуска.
Создание диапазона дат с двух дат
= ТЕКСТ(дата1; «формат») & «-» & ТЕКСТ (дата2; «формат»)
Чтобы отобразить диапазон дат в одной ячейке на основе дат в разных ячейках, вы можете использовать формулу, основанную на функции ТЕКСТ.
В показанном примере формула в ячейке E5:
= ТЕКСТ (B5; «ммм д») & «-» & ТЕКСТ(C5; «ммм д»)
Функция ТЕКСТ принимает числовые значения и преобразует их в текстовые значения, используя заданный вами формат. В этом примере мы используем формат «ммм д» для обеих функций TEКСT в E5. Результаты объединяются дефисом, используя простую конкатенацию.
Примечание. Другие примеры в столбце E используют разные текстовые форматы.
Если дата окончания отсутствует, формула не будет работать правильно, потому что дефис будет добавлен к дате начала (например, «1 марта»).
Чтобы обработать этот случай, вы можете обернуть конкатенацию и вторую функцию ТЕКСТ внутри ЕСЛИ следующим образом:
= ТЕКСТ(дата1; «ммм д») & ЕСЛИ(дата2 <> «»; «-» &ТЕКСТ(дата2; «ммм д»); «»)
Это создает полный диапазон дат, когда обе даты присутствуют, но выводит только дату начала, когда дата окончания отсутствует.
Для обработки случая, когда обе даты отсутствуют, вы можете вложить еще один ЕСЛИ следующим образом:
= ЕСЛИ(дата1 <> «»; ТЕКСТ(дата1; «мммм д») & ЕСЛИ(дата2 <> «»; «-» & ТЕКСТ(дата2; «ммм д»); «»); «»)
Эта формула просто возвращает пустую строку («»), когда дата1 недоступна.
Получать рабочие часы между датами
= ЧИСТРАБДНИ (начало; конец; праздники) * часы
Чтобы получить общее количество часов работы между двумя датами, вы можете использовать формулу, основанную на функции ЧИСТРАБДНИ, где «начало» — это дата начала, «конец» — конечная дата, «праздники» — диапазон, который включает в себя даты отпуска , А «часы» — количество рабочих часов в день.
В показанном примере формула в D5:
=ЧИСТРАБДНИ(B5;C5)*8
Эта формула использует функцию ЧИСТРАБДНИ, чтобы выполнить работу по определению общего количества рабочих дней между двумя датами с учетом выходных и (необязательно) праздников.
Праздники, если они предусмотрены, должны быть диапазоном, который включает действительные даты Excel.
Как только общие рабочие дни известны, их просто умножают на количество часов в рабочем дне.
Обратите внимание, что ЧИСТРАБДНИ по дизайну включает как дату начала, так и дату окончания в результате, и исключает как субботу, так и воскресенье.
Получать рабочие часы между датами собственного расписания
{= СУММ(ВЫБОР(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(дата1 & «:» & дата2))); 1;2;3;4;5;6;7))}
Чтобы вычислить часы работы между двумя датами с настраиваемым расписанием, вы можете использовать формулу, основанную на функциях ДЕНЬНЕД и ВЫБОР.
В показанном примере формула в F5:
=СУММ(ВЫБОР(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(B5&»:»&C5)));0;8;4;8;4;8;0))
Который возвращает 32 часа, основанный на пользовательском расписании, где 8 часов работают в Пн, Ср и Пт, а 4 часа — в Пт и Вт.
Примечание. Это формула массива, которая должна вводиться с помощью Control + Shift + Enter.
По сути, эта формула использует функцию ДЕНЬНЕД для определения дня недели (например, понедельник, вторник и т. д.) Для каждого дня между двумя указанными датами.
ДЕНЬНЕД возвращает число от 1 до 7, соответствующее конкретному дню недели. С настройками по умолчанию: 1 = воскресенье и 7 = суббота, поэтому, 2 = понедельник, 6 = пятница и так далее.
Хитрость этой формулы заключается в создании массива дат, которые вы можете использовать в функции ДЕНЬНЕД. Это делается с помощью СТРОКА с ДВССЫЛ следующим образом:
СТРОКА(ДВССЫЛ(дата1 & «:» & дата2))
ДВССЫЛ позволяет связанным датам «» 42464: 42470 «» интерпретироваться как номера строк. Затем функция СТРОКА возвращает массив вроде этого:
{42464; 42465; 42466; 42467; 42468; 42469; 42470}
Функция ДЕНЬНЕД оценивает эти числа как даты и возвращает этот массив:
{2; 3; 4; 5; 6; 7; 1}
Эти числа соответствуют дню недели каждой даты.
Этот массив затем передается функции ВЫБОР в качестве «номера индекса», который был сконфигурирован с 7 значениями:
Значение1 – рабочие дни в воскресенье
Значение 2 — рабочие часы в понедельник
Значение 3 — рабочие часы вторника
Значение 4 — Рабочие часы в среду
Значение 5 — рабочие часы в четверг
Значение 6 — рабочие часы в пятницу
Значение 7 — работа в субботу
Поскольку мы даем ВЫБОР более чем одно значение индекса, он возвращает более одного результата в массиве следующим образом:
{8; 4; 8; 4; 8; 0; 0}
Эти цифры соответствуют часам, которые выполнялись каждый день с даты 1 по дату2.
Наконец, чтобы получить итоговое значение, нам просто нужно обернуть ВЫБОР в СУММ и ввести формулу массива.
В этом примере итоговый результат составляет 32 часа.
Примечание: вы могли бы подумать, что вы могли бы использовать СУММПРОИЗВ вместо СУММ, чтобы избежать синтаксиса массива, но он не работает; Вам все равно придется использовать CSE. Я знаю, что причина заключается в использовании ДВССЫЛ с СТРОКА для построения массива значений индекса, но не знаю, почему это требует CSE.
Получать рабочие дни между датами
= ЧИСТРАБДНИ(нач_дата; кон_дата; праздники)
Чтобы вычислить количество рабочих дней между двумя датами, вы можете использовать функцию ЧИСТРАБДНИ. ЧИСТРАБДНИ автоматически исключает выходные и может также исключать настраиваемый список праздничных дней.
Например, если у вас есть дата 4 января 2016 года (понедельник) в ячейке B4 и 11 января 2016 года (также понедельник) в ячейке C4, эта формула вернет 6:
= ЧИСТРАБДНИ(B4; C4)
Обратите внимание, что ЧИСТРАБДНИ включает как начальную, так и конечную даты в расчете, если они являются рабочими днями.
ЧИСТРАБДНИ также может исключать настраиваемый список праздников. Например, если у вас есть даты отпуска в H1: H10, вы можете указать ЧИСТРАБДНИ не включать эти даты в качестве рабочих дней, добавив этот диапазон в качестве третьего аргумента в формуле:
= ЧИСТРАБДНИ(B4; C4; H1: H10)
Если вам нужно учитывать пользовательские выходные дни (например, выходные — это только суббота, воскресенье и понедельник и т. д.), Вам нужно переключиться на более надежную функцию ЧИСТРАБДНИ.МЕЖД, которая позволяет вам установить, какие дни недели считаются выходными, подавая аргумент в выходные дни в виде числового кода.
Список праздников между двумя датами
{= ОБЪЕДИНИТЬ («;»; ИСТИНА; ЕСЛИ(даты> = старт; ЕСЛИ(даты <= конец; праздники; «»); «»))}
Для отображения праздников, которые происходят между двумя датами, вы можете использовать формулу, основанную на функциях ОБЪЕДИНИТЬ и ЕСЛИ.
В показанном примере формула в F8:
{= ОБЪЕДИНИТЬ(«;»; ИСТИНА; ЕСЛИ(B4: B12> = F5; ЕСЛИ(B4: B12 <= F6; C4: C12; «»); «»))}
Это формула массива и должна вводиться control + shift + enter.
На высоком уровне эта формула использует вложенную функцию ЕСЛИ для возвращения массива праздников между двумя датами. Затем этот массив обрабатывается функцией ОБЪЕДИНИТЬ, которая преобразует массив в текст, используя запятую в качестве разделителя.
Работая изнутри, мы генерируем массив совпадений праздников, используя вложенный ЕСЛИ:
ЕСЛИ(B4: B12> = F5; ЕСЛИ(B4: B12 <= F6; C4: C12; «»); «»)
Если даты в B4: B12 больше или равны начальной дате в F5, и если даты в B4: B12 меньше или равны конечной дате в F6, тогда ЕСЛИ возвращает массив праздничных дней. В показанном примере список выглядит так:
{«»; «»; «День президента»; «День памяти»; «»; «»; «»; «»; «»}
Этот массив затем доставляется в функцию ОБЪЕДИНИТЬ в качестве аргумента текст1, где разделитель имеет значение «,», а игнорировать_пустые — ИСТИНА. Функция ОБЪЕДИНИТЬ обрабатывает элементы в массиве и возвращает строку, где каждый непустой элемент разделяется запятой и пробелом.
Примечание. Функция ОБЪЕДИНИТЬ является новой в Excel 2016.
Функция NETWORKDAYS (ЧИСТРАБДНИ) в Excel используется для вычисления количества рабочих дней между двумя датами. Расчет происходит за исключением выходных дней между указанными датами (по умолчанию суббота и воскресенье считаются выходными днями). Функция также может исключать любые указанные вами даты и считать их как праздники.
Обычно, эту функцию используют, чтобы рассчитать вознаграждение сотрудникам за переработку.
Содержание
- Что возвращает функция
- Синтаксис
- Аргументы функции
- Дополнительная информация
- Примеры использования функции NETWORKDAYS (ЧИСТРАБДНИ) в Excel
- Пример №1. Вычисляем количество рабочих дней из диапазона дат (исключая выходные)
- Пример № 2. Вычисляем количество рабочих дней из диапазона дат (исключая выходные и праздники)
Что возвращает функция
Положительное целое число, равное количеству рабочих дней между двумя датами.
Синтаксис
=NETWORKDAYS(start_date, end_date, [holidays])
=ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники])
Аргументы функции
- start_date (нач_дата) — дата, с которой начинается вычисление по формуле;
- end_date (кон_дата) — дата, вплоть до которой необходимо провести вычисление;
- [holidays] ([праздники]) — (при необходимости) — это диапазон дат, который может быть исключен из расчета. Например, это могут быть национальные / государственные праздники. Значение может быть ссылкой на диапазон ячеек, который содержит даты для исключения.
Дополнительная информация
- Суббота и воскресенье считаются выходными днями по умолчанию. В случае, если вы хотите, чтобы выходные дни считались как рабочие дни, используйте функцию NETWORKDAYS.INTL. (ЧИСТРАБДНИ.МЕЖД).
- Данные в функции могут быть использованы в следующих форматах:
— как результат какого-либо вычисления или формулы;
— данные в формате даты;
— дата, введенная в текстовом формате (в кавычках).
Примеры использования функции NETWORKDAYS (ЧИСТРАБДНИ) в Excel
Пример №1. Вычисляем количество рабочих дней из диапазона дат (исключая выходные)
Больше лайфхаков в нашем Telegram Подписаться
В приведенном выше примере, функция Excel NETWORKDAYS (ЧИСТРАБДНИ) вычисляет количество дней между 20 декабря и 10 января, исключая выходные дни (суббота и воскресенье) и возвращает “15” в качестве результата.
Пример № 2. Вычисляем количество рабочих дней из диапазона дат (исключая выходные и праздники)
На примере выше, функция ЧИСТРАБДНИ вычисляет количество дней между 20 декабря и 10 января, исключая выходные (субботу и воскресенье), а также указанные праздники. Результат — 13 дней.
Здесь, мы указали 2 дня праздничных. Обратите внимание, что эти два праздника выпадают на будние дни (25 декабря 2015 и 1 января 2016 — это пятница). В случае, если праздник приходится на выходной день, он не учитывается в качестве исключения (как выходные, так или иначе не учитываются).
На примере выше, если вы измените 01 Января 2016 (пятница) на 02 Января 2016 года (суббота), то результат изменится до 14.
Skip to content
Довольно распространенная задача: определить количество рабочих дней в период между двумя датами – это частный случай расчета числа дней, который мы уже рассматривали ранее. Тем не менее, в Excel для этого даже существуют специальные функции.
Не совсем правильно будет пользоваться простейшими методами вычитания одной даты из другой либо функцией РАЗНДАТ. Ведь мы при этом не учитываем наш график труда и отдыха, что весьма важно.
Microsoft Excel имеет две основных функции, специально предназначенных для расчета будних дней – РАБДЕНЬ (WORKDAY) и ЧИСТРАБДНИ (NETWORKDAYS). Мы также остановимся на дополнительных РАБДНИ.МЕЖД и ЧИСТРАБДНИ.МЕЖД, которые могут быть очень полезными.
Функция РАБДЕНЬ определяет момент времени, который наступит через какое-то количество рабочих дней в будущем или в прошлом. Вы можете использовать ее для добавления или вычитания рабочих дней к определенной точке времени.
Используя формулу ЧИСТРАБДНИ, вы можете рассчитать, сколько рабочих дней во временном интервале.
- Функция РАБДЕНЬ.
- Как добавить или вычесть рабочие дни.
- Настраиваем свой график выходных дней.
- Как рассчитать, сколько рабочих дней между двумя датами?
- А если у нас свой особенный график труда и отдыха?
- Как определить ближайший рабочий день?
- Возможные ошибки при расчетах.
А теперь давайте подробнее рассмотрим каждую их них отдельно и посмотрим, как можно использовать для расчета будних дней в ваших таблицах Excel.
Функция РАБДЕНЬ.
Она возвращает момент времени, который наступит через определенное число рабочих дней (или наступил ранее). Она не учитывает дни отдыха и любые праздники, которые вы отдельно укажете.
Она подходит для расчета производственных графиков и сроков исполнения на основе стандартного производственного календаря, причем суббота и воскресенье – это для нее всегда дни отдыха.
РАБДЕНЬ — это встроенная функция в Excel 2007, 2010, 2013 и 2016. Ее можно ввести руками либо при помощи мастера функций. В более ранних версиях вам нужно специально включать пакет инструментов анализа.
Вам необходимо использовать следующие аргументы:
РАБДЕНЬ(дата_начала; дни; [праздничные_дни])
Первые два обязательны, а последний – по желанию:
- Дата_начала – с нее начинается подсчет дней.
- Дни — рабочие дни, которые нужно добавить или вычесть из начальной точки отсчета. Положительное число возвращает будущий момент времени, отрицательное — возвращает в прошлое.
- Праздничные_дни — необязательный список дат, которые следует считать нерабочими днями. Это может быть либо диапазон ячеек, содержащих даты, которые вы хотите исключить из расчетов, либо константа массива.
Теперь, когда вы знаете основы, давайте посмотрим, как вы можете использовать РАБДЕНЬ в ваших таблицах Excel.
Как добавить или вычесть рабочие дни.
Чтобы рассчитать рабочие дни в Эксель, следуйте этим простым правилам:
- Чтобы добавить будние дни, введите положительное число в качестве аргумента дни в формуле РАБДЕНЬ.
- Чтобы вычесть будние дни, используйте там же отрицательное число.
Предположим, у вас в ячейке A10 указан начальный момент времени, а список праздников — в ячейках А2: А7. Вы хотите узнать, какое число будет через 90 рабочих дней в будущем и прошлом.
Вы можете сделать это, используя следующие формулы:
Чтобы добавить столько же к начальной точке, но учитывая праздничные дни в А2: А7:
=РАБДЕНЬ($A$10;90;$A$2:$A$7)
Чтобы вычесть 90 рабочих дней, исключая праздники:
=РАБДЕНЬ($A$10;-90;$A$2:$A$7)
Чтобы рассчитать сроки на основе текущей даты, используйте функцию СЕГОДНЯ() в качестве точки начала:
Чтобы добавить 90 рабочих дней:
=РАБДЕНЬ(СЕГОДНЯ();90;$A$2:$A$7)
Чтобы переместиться на такое же время назад по отношению к сегодня:
=РАБДЕНЬ(СЕГОДНЯ();-90)
Чтобы указать время начала непосредственно в формуле, используйте формулу ДАТА():
=РАБДЕНЬ(ДАТА(2020;1;7);90;$A$2:$A$7)
На следующем скриншоте показаны результаты всех этих и еще нескольких формул РАБДЕНЬ:
И, естественно, вы можете указать, сколько будних дней нужно добавить либо вычесть из точки начала в некоторой ячейке, а затем сослаться на эту ячейку в своей формуле. Например:
=РАБДЕНЬ($A$10;С1;$A$2:$A$7)
Где A10 — начальная датировка, а C1 — число рабочих дней до (отрицательные числа) или после (положительные числа) нее, без учета праздников.
Настраиваем свой график выходных дней.
В случае, если у вас применяется какой-то особенный график нерабочих дней (не суббота и воскресенье), то вам в помощь – формула РАБДЕНЬ.МЕЖД (WORKDAY.INTL в английской версии).
Она появилась в Excel 2010, в более старых версиях программы ее нет.
Дополнительно к своей предшественнице, она позволяет указывать, какие именно дни недели предназначены у вас для отдыха.
Синтаксис ее выглядит следующим образом:
РАБДЕНЬ.МЕЖД (дата_начала, дни, [выходные], [праздничные_дни])
Первые два аргумента являются обязательными и знакомыми нам:
Дата_начала – начальный момент времени.
Дни — будние дней до (отрицательное значение) или после (положительное значение) начальной точки. Если этот аргумент в результате каких-то расчетов передается в виде десятичного числа, то дробная часть отбрасывается.
Последние два аргумента являются необязательными:
Выходные — указывает, что именно следует считать днями отдыха. Это может быть либо число, либо текст, как показано ниже.
Число |
Выходные дни |
1 или отсутствует |
Суббота Воскресенье |
2 |
Воскресенье понедельник |
3 |
Понедельник вторник |
4 |
Вторник Среда |
5 |
Среда Четверг |
6 |
Четверг Пятница |
7 |
Пятница Суббота |
11 |
Только воскресенье |
12 |
Только понедельник |
13 |
Только вторник |
14 |
Только среда |
15 |
Только четверг |
16 |
Только в пятницу |
17 |
Только суббота |
Текст для указания выходного дня — серия цифр из семи нулей и единиц, представляющих семь дней недели, начиная с понедельника. 1 означает нерабочий день, и 0 — соответственно наоборот. Например:
- «0000010» — суббота — отдыхаем.
- «1000001» — понедельник и воскресенье — отдыхаем.
И вот как это может выглядеть на примере:
Я бы рекомендовал обратить внимание на конструкцию
=РАБДЕНЬ.МЕЖД($A$10;90;»1000001″;$A$2:$A$7)
Просто переставляя 0 и 1, можно прямо указать любой график труда и отдыха.
Все остальное, думаю, достаточно хорошо понятно из скриншота.
Замечание. Функции Excel РАБДЕНЬ и РАБДЕНЬ.МЕЖД возвращают порядковые номера (числа), представляющие даты. Чтобы они отображались как нужно, выделите нужные ячейки и нажмите Ctrl + 1, чтобы открыть диалоговое окно «Формат ячеек». На вкладке «Число» выберите «Дата» и определите нужный формат.
Как рассчитать, сколько рабочих дней между двумя датами?
В ситуациях, когда вам нужно получить число рабочих дней в каком-то временном промежутке, используйте формулу ЧИСТРАБДНИ() (в английском варианте – NETWORKDAYS) :
ЧИСТРАБДНИ (дата_начала; дата_окончания; [праздничные_дни])
Первые два аргумента должны уже быть вам знакомы, а третий (необязательный) аргумент позволяет исключить пользовательский список праздников из подсчета.
Чтобы узнать, сколько будних дней между двумя точками в столбцах A и B, используйте следующую формулу:
=ЧИСТРАБДНИ(A10;B10)
При желании вы можете ввести свой список праздников в отдельный диапазон и дополнить формулу, чтобы исключить эти дни:
=ЧИСТРАБДНИ(A10;B10;A2:A7)
В результате учитываются только будние дни.
А если у нас свой особенный график труда и отдыха?
Если вам нужно обрабатывать какие-то особенные нерабочие дни (например, отдыхаем только в воскресенье, в понедельник и воскресенье и т.д), используйте функцию ЧИСТРАБДНИ.МЕЖД, которая позволяет указать, какие дни недели предназначены для отдыха.
ЧИСТРАБДНИ.МЕЖД (WORKDAY.INTL в английском варианте) — более мощная модификация функции ЧИСТРАБДНИ, которая работает с пользовательскими параметрами выходных . Как и его предшественница, она возвращает число рабочих дней в будущем или в прошлом, но позволяет вам определить, какие именно дни недели в вашем графике нужно считать нерабочими.
Формула ЧИСТРАБДНИ.МЕЖД появилась впервые в Excel 2010, и поэтому недоступна в более ранних версиях программы.
Синтаксис ее выглядит следующим образом:
ЧИСТРАБДНИ.МЕЖД (дата_начала, дни, [выходные], [праздничные_дни])
Первые два аргумента являются обязательными и встречались нам уже неоднократно:
Дата_начала — начальная точка.
Дни — будние дней до (отрицательное значение) или после (положительное значение) точки начала. Если этот аргумент в результате каких-то расчетов предоставляется в виде десятичного числа, то он усекается до целого.
Последние два аргумента являются необязательными:
Выходные — указывает, в какие дни недели вы не работаете. Это может быть либо число, либо текст, как показано ниже.
Число |
Выходные дни |
1 или отсутствует |
Суббота Воскресенье |
2 |
Воскресенье понедельник |
3 |
Понедельник вторник |
4 |
Вторник Среда |
5 |
Среда Четверг |
6 |
Четверг Пятница |
7 |
Пятница Суббота |
11 |
Только воскресенье |
12 |
Только понедельник |
13 |
Только вторник |
14 |
Только среда |
15 |
Только четверг |
16 |
Только в пятницу |
17 |
Только суббота |
Текст для указания выходного дня — серия цифр из семи нулей и единиц, представляющих семь дней недели, начиная с понедельника. 1 означает день отдыха, а 0 — будний день. Например:
- «0000011» — суббота и воскресенье – не работаем.
- «1000001» — понедельник и воскресенье — отдыхаем.
На первый взгляд, такие конструкции могут показаться громоздкими и ненужными, но лично мне этот метод больше нравится, потому что вы можете создавать графики выходных «на лету», не запоминая никаких чисел.
Праздники — необязательный список дней, которые вы хотите исключить из своего календаря. Это может быть диапазон ячеек, содержащих даты, или константа массива из последовательных значений, представляющих их. Все, как и ранее.
А теперь несколько примеров.
=ЧИСТРАБДНИ.МЕЖД(A10;B10;1) – это знакомый нам вариант, когда нерабочими считаются суббота и воскресенье.
А вот =ЧИСТРАБДНИ(A10;B10;11) – отдых только в воскресенье,
=ЧИСТРАБДНИ.МЕЖД(A10;B10;2) – в воскресенье и понедельник. Такой расчет полезен, если в вашей организации свой график работы, не такой, как у всех.
=ЧИСТРАБДНИ.МЕЖД(A11;B11;»1100000″;$A$2:$A$7)
не работаем в понедельник и вторник, учитывается также список праздников.
Вы можете объединить полученное число со своим собственным сообщением, склеив их при помощи оператора &.
Например, давайте посмотрим, сколько нужно еще отработать до конца 2020 года. Для этого введем 31 декабря 2020 года в формате даты, и используем следующее выражение:
=»Осталось «&ЧИСТРАБДНИ(СЕГОДНЯ();ДАТА(2020;12;31);A2:A7)&» дн. до конца года!»
Ух, осталось всего 203 дня! Не так много, как я думал
Примечание. Чтобы учесть свой индивидуальный график работы, используйте ЧИСТРАБДНИ.МЕЖД().
Как определить ближайший рабочий день?
Предположим, мы должны определить, какого числа мы можем выставлять счета своим клиентам, а какого — нет. Думаю, вы согласитесь, что делать это в выходной день не стоит. Поэтому в зависимости от даты мы должны либо оставить ее неизменной, либо предложить другой день — рабочий.
Если выходными днями у нас традиционно считаются суббота и воскресенье, то ближайший рабочий день — это либо пятница, либо понедельник. Вот как это может выглядеть.
Для субботы подсчитать дату ближайшего понедельника можно двумя способами:
=РАБДЕНЬ(A2-1;1)
или
=ЕСЛИ(ДЕНЬНЕД(A3;2)>5;A3+(8-ДЕНЬНЕД(A3;2));A3)
Ближайший рабочий день в прошлом (то есть прошлая пятница) определяется так:
=ЕСЛИ(ДЕНЬНЕД(A4;2)>5;МИН(A4-(ДЕНЬНЕД(A4;2)-5);A4);A4)
Ну и если немного усложнить условие — если день попадает на субботу, тогда ближайший рабочий день — прошедшая пятница, а если на воскресенье — тогда предстоящий понедельник:
=ЕСЛИ(ДЕНЬНЕД(A6;2)>6;A6+(8-ДЕНЬНЕД(A6;2));МИН(A6-(ДЕНЬНЕД(A6;2)-5);A6))
Как видите, на слишком уж сложно.
Возможные ошибки при расчетах.
Если ваша формула РАБДЕНЬ, РАБДЕНЬ.МЕЖД, ЧИСТРАБДНИ или ЧИСТРАБДНИ.МЕЖД возвращает ошибку #ЧИСЛО! или #ЗНАЧ!, причина может быть одной из следующих:
- аргументы начала и конца временного отрезка передают неверные данные (не являются датой, записаны как текст скорее всего)
- аргумент «выходные» указан неверно (например, 22 или «000000011»).
Надеюсь, эти примеры и инструкции были вам полезны. Если еще остались вопросы — пишите в комментариях. Постараюсь ответить.
Также рекомендуем о работе с датами: