Количество вторников в месяце excel

Количество определенных дней недели в месяце

Автор dvi73, 16.09.2014, 21:06

« назад — далее »

Подскажите пожалуйста, как определить количество, например, вторников в текущем месяце в Excel 2003. Заранее благодарю за ответы.



А у меня такое родилось:

=ИЛИ(ДЕНЬНЕД(КОНМЕСЯЦА(A1;0)-{0;1;2};2)*(ДЕНЬ(КОНМЕСЯЦА(A1;0))>{28;29;30})=B1)+4
A1 — дата, B1 — день недели (число)



=ЕСЛИ(ДЕНЬ(КОНМЕСЯЦА(C1;0))-ДЕНЬ(C1)+1-(ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(C1;0))-ДЕНЬ(C1)+1)/7)*7)>=2;ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(C1;0))-ДЕНЬ(C1)+1)/7)+1;ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(C1;0))-ДЕНЬ(C1)+1)/7))
где С1-начальная дата
С уважением, ZS5


С учетом того, что в любом месяце (даже в феврале) может быть либо 4, либо 5 «вторников» в зависимости от того, с какого дня недели начинается месяц и каким днем недели он заканчивается, то решение задачи можно решить «в лоб»:

=3+(ДЕНЬНЕД(КОНМЕСЯЦА(B1;-1)+1;2)<=A1)+(ДЕНЬНЕД(КОНМЕСЯЦА(B1;0);2)>=A1)

здесь:
— в ячейке А1 записано число от 1 до 7 (1 =>  ПН)
— в ячейке B1 записана любая дата интересующего нас месяца, например =СЕГОДНЯ()
— функции ДЕНЬНЕД(КОНМЕСЯЦА(…);2) — возвращают порядковые номера первого и последнего дня выбранного месяца
— функция сравнения возвращает значение ИСТИНА при выполнении соответствующего условия или ЛОЖЬ в противном случае. В математических выражениях этим значениям соответствуют значения 1 и 0.


IKor, формула не учитывает вариант, когда три последних дня месяца Сб, Вс и Пн (в 2014 это март и июнь)


Согласен…
Придется модифицировать функцию…
=4+(ДЕНЬНЕД(КОНМЕСЯЦА(B1;-1)+1;2)<=A1)*(ДЕНЬНЕД(КОНМЕСЯЦА(B1;0);2)>=A1)


Огромное спасибо всем за ответы, буду с этим разбираться!
Но, к сожалению, я неправильно сформулировал мою задачу. :( Мне надо узнать сколько вторников осталось до конца месяца начиная с текущего дня. Может быть поможете мне найти решение. Заранее благодарю всех за советы.


IKor, в такой редакции не всегда правильно определяются понедельник и суббота.


в A1 дата, в B1 — день недели (от1 до 7)

=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;A1):ИНДЕКС(A:A;ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;)));2)=B1))


MCH, огромное спасибо! Все работает.


Еще вариант (более предпочтительный)

=ЦЕЛОЕ((ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;7)-A1-ОСТАТ(B1-A1+1;7))/7)


=ЕСЛИ(ДЕНЬ(КОНМЕСЯЦА(ТДАТА();0))-ДЕНЬ(ТДАТА())+1-(ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(ТДАТА();0))-ДЕНЬ(ТДАТА())+1)/7)*7)>=B1;ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(ТДАТА();0))-ДЕНЬ(ТДАТА())+1)/7)+1;ЦЕЛОЕ((ДЕНЬ(КОНМЕСЯЦА(ТДАТА();0))-ДЕНЬ(ТДАТА())+1)/7))
или
=ЦЕЛОЕ((ДАТА(ГОД(ТДАТА());МЕСЯЦ(ТДАТА())+1;7)-ТДАТА()-ОСТАТ(КОНМЕСЯЦА(ТДАТА();0)-B1+1;7))/7)
где В1- день недели


Цитата: vikttur от 17.09.2014, 20:52
IKor, в такой редакции не всегда правильно определяются понедельник и суббота.

Ну так ведь спрашивали про вторники же!!! :)
К сожалению, для учета второй области возможных пятых_дней_недели приходится значительно увеличивать количество символов формулы… поэтому красивого решения пока не получается. Жаль :(


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Количество определенных дней недели в месяце

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

На чтение 5 мин Просмотров 2.1к. Опубликовано 27.02.2022

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

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

Содержание

  1. Стандартный расчет количества дней
  2. С помощью функции ДНИ
  3. С помощью функции РАЗНДАТ
  4. Расчет кол-ва рабочих дней
  5. Расчет кол-ва неполных рабочих дней между двумя датами
  6. Количество понедельников между двумя датами

Стандартный расчет количества дней

Итак, в Excel есть две функции для вычисления кол-ва дней.

С помощью функции ДНИ

Чтобы получить результат от функции нам понадобится дата начала и дата конца.

Итак, вы указываете эти две даты в аргументах функции и получаете количество дней между ними.

Хороший пример вы можете видеть на картинке ниже:

Используем эту формулу:

=ДНИ(B2;B1)  

Также вы можете вручную прописать даты в функции (без указания ячеек), но тогда вам нужно заключить их в кавычки.

Эта функция вычислит количество дней между этими датами, но если вы хотите чтобы расчет велся «включительно» с датами начала и конца, то добавьте к результату + 1 (просто пропишите это в функции).

С помощью функции РАЗНДАТ

Эта функция аналогична, её отличие в том, что можно указать больше параметров. То есть больше «подстроить» под ситуацию.

Также можно вычислить кол-во месяцев или лет между датами.

Допустим, мы имеем то что указано на картинке ниже:

Пропишем формулу:

=РАЗНДАТ(B1;B2;"D")  

Эта функция использует три наших аргумента:

  • Дата начала — B1
  • Дата окончания — B2
  • «D» — текстовая строка

Важный момент: этой функции не будет в подсказке при написании названия функции, т.е. если вы будете писать РАЗНДАТ, Excel будет вести себя так, как будто он не знает что это за функция, но это не так.

Функция РАЗНДАТ больше подходит для ситуаций, когда нужно вычислить кол-во лет или месяцев между датами, в других ситуациях удобнее применять ДНИ (функцию).

Вот формула, которая даст результат по месяцам, которые будут между датами:

=РАЗНДАТ(B1;B2;"M") 

А эта формула, тоже самое что и прошлая, только вычисляет кол-во лет:

=РАЗНДАТ(B1;B2;"Y")  

Расчет кол-ва рабочих дней

Итак, рабочие дни можно вычислить двумя способами:

  • Функция Excel ЧИСТРАБДНИ — ее следует использовать, если выходные дни — суббота и воскресенье.
  • Функция Excel ЧИСТРАБДНИ.МЕЖД — используйте ее, когда выходные дни отличаются от субботы и воскресенья.

Сначала быстро рассмотрим синтаксис и аргументы фунции ЧИСТРАБДНИ.

Функция Excel ЧИСТРАБДНИ

=ЧИСТРАБДНИ(нач_дата, конеч_дата, [праздники])

  • нач_дата — это дата начала отсчета.
  • end_date — это конечная дата отсчета.
  • [праздники] — (Необязательно) Отдельная дата или диапазон дат, которые не будут учитываться в расчетах.

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

Мы будем использовать эту формулу:

=ЧИСТРАБДНИ(B2;C2;$F$2:$F$6)  

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

Но бывают и другие ситуации, к примеру, в разных странах выходные на неделе строятся по-разному, это может быть пятница и так далее.

Именно для таких ситуаций и появилась функция ЧИСТРАБДНИ.МЕЖД.

Посмотрим что из себя представляет эта функция.

Функция Excel ЧИСТРАБДНИ.МЕЖД

=ЧИСТРАБДНИ.МЕЖД(нач_дата; конеч_дата; [выходные]; [праздники])

  • нач_дата — значение даты, представляющее собой начальную дату.
  • конеч_дата — значение даты, представляющее дату окончания.
  • [нерабочие дни] — (Необязательно) в этом аргументе указываются исключительные дни(праздники и т.д.), если аргумента не будет, выходные останутся по-стандарту(суббота и воскресенье).

А сейчас, попробуем посчитать кол-во рабочих дней, если выходными будут пятница и суббота.

Допустим, таблица такая же как и в прошлом примере:

Будем использовать формулу:

=ЧИСТРАБДНИ.МЕЖД(B2;C2;7;$F$2:$F$6)  

3 аргумент в функции сообщает Excel, что пятница и суббота выходные.

Также, мы можем использовать ЧИСТРАБДНИ.МЕЖД для расчета выходных между двумя датами.

Она конечно вычисляет кол-во рабочих дней, но мы можем адаптировать это «под себя».

Допустим, таблица все та же:

Формула, которая нам подойдет:

=ДНИ(C2;B2)+1-РАЗНДАТ(B2;C2)

Расчет кол-ва неполных рабочих дней между двумя датами

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

Допустим, у нас есть похожая таблица с данными:

Формула, для нашего случая, будет такой:

=ЧИСТРАБДНИ.МЕЖД($B$3;$C$3;"1010111";$E$3:$E$7)  

Для обозначения выходных дней, мы использовали «1010111».

  • 0 — рабочий день
  • 1 — неполный рабочий день

Первая цифра из этого числа — понедельник, последняя — воскресенье

Грубо говоря, «0000011» значит, что с понедельника по пятницу — рабочие дни, а суббота и воскресенье — нерабочие (выходные).

По той же логике, «1010111» означает, что только вторник и четверг являются рабочими, а остальные 5 дней — нерабочими.

Если вам нужно исключить какие-то дни из расчетов, можете исключать их таким образом.

Количество понедельников между двумя датами

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

Функция, которая выведет кол-во понедельников:

=ЧИСТРАБДНИ(B2;C2;"0111111")  

В этой формуле «0» означает рабочий день, а «1» — нерабочий день.

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

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

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

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

Как получить N-й день недели месяца в Excel

Ниже на рисунке представлена динамическая таблица с автозаполнением ячеек датами по условию. Ее формулы вычисляют даты номера дня недели в каждом месяце. При использовании этой таблицы следует ввести необходимый: год, месяц и номер появления дня недели в месяце (например, третий понедельник месяца, или вторая пятница и т.п.). В данном примере ячейка B2 показывает, что необходимо найти даты для вторых всех дней от понедельника и до воскресенья. Например, второй понедельник третьего месяца или вторая пятница января.

Формула для определения даты очереди дня недели в месяце:

ДАТА и ДЕНЬНЕД.

Читайте также: Как узнать последний день недели месяца в Excel.

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



Чтобы воспользоваться этой таблице заполните значениями 2 столбца в диапазоне A3:B14 – года и номера месяцев, которые Вас интересуют. Далее смените число в ячейке B2 на желаемый порядковый номер появления дня недели в месяце. Например, если интересует дата второго вторника для каждого месяца введите значение 2 и посмотрите на значения столбца D3:D14 – даты вторых вторников. Если нужны даты для третьих четвергов тогда введите число 3 в ячейку B2 и смотрите на значения в столбце F3:F14 – там будут все третьи четверги по каждому месяцу.

На чтение 10 мин. Просмотров 13.1k.

Содержание

  1. Получить дни, месяцы и годы между датами
  2. Подсчитайте дни недели между датами
  3. Подсчитывать праздники между двумя датами
  4. Создание диапазона дат с двух дат
  5. Получать рабочие часы между датами
  6. Получать рабочие часы между датами собственного расписания
  7. Получать рабочие дни между датами
  8. Список праздников между двумя датами

Получить дни, месяцы и годы между датами

= РАЗНДАТ (начало; конец; «г»)&»годы»; & РАЗНДАТ(начало; конец; «гм») & «месяцы»; & РАЗНДАТ(начало; конец; «мд») & «дни»

Чтобы рассчитать и отобразить время между датами в днях, месяцах и годах, вы можете использовать формулу, основанную на функции РАЗНДАТ.

Получить дни, месяцы и годы между датами

В показанном примере формула в 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.

Понравилась статья? Поделить с друзьями:
  • Количество встроенных функций excel
  • Количество выбранных строк в excel
  • Количество встречающихся значений в excel
  • Количество выборок в excel
  • Количество всех красных ячеек в excel