Если на листе Excel Вы работаете не только с числами, графиками, рисунками, но и с датами, то, наверняка, сталкивались с ситуацией, когда необходимо было посчитать разницу между ними. Например, нужно определить количество дней или месяцев за определенный период времени, или посчитать возраст человека так, чтобы результат получился в днях, месяцах и годах, а может, требуется вычислить именно рабочие дни.
Статья про расчет разницы в Эксель на сайте уже есть, и в ней я немного затрагивала даты. Но сейчас давайте рассмотрим данный вопрос подробнее и разберемся, как посчитать количество дней между двумя датами простым способом или используя функцию РАЗНДАТ(), и как определить количество именно рабочих дней.
Способ 1: вычитание
Начнем с самого простого – это отнимем от одной даты вторую, и получим нужное нам значение. Перед этим убедитесь, что формат ячеек, в которые вписаны числа, выбран «Дата» .
Если еще не заполняли их, тогда выделите диапазон, с которым хотите работать и нажмите напротив названия группы «Число» на маленькую стрелочку.
В открывшемся окне слева выберите подходящий нам формат, а потом в основной области определитесь с типом: 14.03.12, 14 мар 12 или другой. Нажимайте «ОК» .
В те ячейки, для которых только что поменяли формат, вводите данные. Я заполнила А1 и В1 . Теперь нужно выбрать любую ячейку ( D1 ), в которой установлен общий формат данных, иначе расчеты будут некорректные. Поставьте в нее «=» и нажмите сначала позднюю ( В1 ) дату, потом раннюю ( А1 ). Чтобы вычислить между ними количество дней, жмите «Enter» .
Как видите, между 5 июня и 24 сентября 111 дней.
Способ 2: использование функции
Для этого выделите ячейку, в которой будет результат ( В3 ), и посмотрите, чтобы для нее был выбран общий формат.
Для вычисления дней будем использовать функцию РАЗНДАТ() . В нее входят три аргумента: дата начальная и конечная, единица. Единица – это в чем мы хотим получить результат. Сюда подставляется:
«d» – количество дней;
«m» – количество полных месяцев;
«y» – количество полных лет;
«md» – посчитает дни без учета месяцев и годов;
«yd» – подсчет дней без учета только годов;
«ym» – посчитает месяцы не учитывая год.
Ставим в В3 знак равенства, пишем РАЗНДАТ и открываем скобку. Затем выделяем раннюю дату ( А1 ), потом позднюю ( В1 ), ставим в кавычках подходящую единицу и закрываем скобку. Между всеми аргументами ставьте «;» . Для расчета, нажмите «Enter» .
У меня получилась такая формула:
Выбрав в качестве единицы «d» , я получила результат – 111.
Если изменить данное значение, например, на «md» , тогда формула посчитает разницу между 5 и 24 без учета месяцев и годов.
Меняя таким образом данный аргумент, получится вывести точный возраст человека. В одной ячейке будут года «y» , второй месяцы «ym» , третьей дни «md»
Способ 3: считаем рабочие дни
Чтобы посчитать именно рабочие дни за определенный период используется функция ЧИСТРАБДНИ() .
Для примера возьмем такую табличку. В столбце А у нас начало месяца или начальная дата отсчета, в В – конец месяца или отсчета. Данная функция считает рабочие дни без учета субботы и воскресенья, но в месяцах есть еще и праздники, поэтому столбец С заполним соответствующими датами.
Выделите ячейку, в которой будете считать, и выберите для нее общий числовой формат.
Дальше ставьте «=» и пишите функцию. У меня она выглядит так:
В качестве аргументов указываем начальную дату ( А5 ), потом конечную ( В5 ). Последний аргумент – это праздники ( С5 ). Разделяем их «;» .
Нажав «Enter» появится результат, в примере ячейка D5 – 21 день.
Теперь рассмотрим, если в месяце несколько праздников. Например, в январе Новый год и Рождество. Выделяем ячейку ( D6 ) и ставим в нее равно. Потом нажимаем в строке формул на букву «f» . Откроется окно «Вставка функции» . В поле «Категория» выберите «Полный алфавитный перечень» и найдите в списке нужную функцию. Жмите «ОК» .
Дальше необходимо выбрать аргументы функции. В «Нач_дата» выбираем начальное значение ( А6 ), в «Кон_дата» – конечное ( В6 ). В последнем поле вписываем даты праздников в скобках <> и кавычках «» . Потом нажимайте «ОК» .
В результате мы получим такую функцию и значение будет посчитано без учета выходных и указанных праздников:
Чтобы не прописывать праздники вручную, можно указать в соответствующем поле определенный диапазон. У меня это С6:С7 .
Рабочие дни посчитаются, и функция будет иметь вид:
Теперь сделаем подсчет для последнего месяца. Вводим функцию и заполняем ее аргументы:
В феврале получилось 19 рабочих дней.
Про другие функции даты и времени в Эксель, я написала отдельную статью, и ее можно прочесть, перейдя по ссылке.
Выбирайте один из описанных способов и считайте разницу в Эксель между необходимыми датами в днях, месяцах или годах, ну а если нужно, то рассчитайте только количество рабочих дней.
Вычисление разности двух дат
В этом курсе:
Вычисление разности двух дат
Используйте функцию РАЗДАТ, если вы хотите вычислить разницу между двумя датами. Сначала поместите дату начала в ячейку, а другую дату окончания . Введите формулу, как по одной из следующих формул:
Предупреждение: Если значение нач_дата больше значения кон_дата, возникнет ошибка #ЧИСЛО!
Разница в днях
В этом примере дата начала находится в ячейке D9, а даты окончания — в ячейке E9. Формула находится в F9. «d» возвращает количество полных дней между двумя датами.
Разница в неделях
В этом примере дата начала находится в ячейке D13, а даты окончания — в ячейке E13. «d» возвращает количество дней. Обратите внимание на то, что «/7» в конце. При этом количество дней делится на 7, поскольку в неделе есть 7 дней. Обратите внимание на то, что этот результат также нужно отформатирован как число. Нажмите CTRL+1. Затем щелкните «Число> десятичных знаках: 2.
Разница в месяцах
В этом примере дата начала находится в ячейке D5, а даты окончания — в ячейке E5. В формуле «м» возвращает количество полных месяцев между двумя днями.
Разница в годах
В этом примере дата начала находится в ячейке D2, а даты окончания — в ячейке E2. «y» возвращает количество полных лет между двумя днями.
Расчет возраста в накопленных годах, месяцах и днях
Вы также можете вычислить возраст или время обслуживания другого человека. Результат может выглядеть так: «2 года, 4 месяца, 5 дней».
1. Для поиска итогов в годах используйте раздатную дату.
В этом примере дата начала находится в ячейке D17, а даты окончания — в ячейке E17. В формуле «y» возвращает количество полных лет между двумя днями.
2. Чтобы найти месяцы, снова воспользуйтесь РАЗДАТНОЙ ДАТОЙ с «гм».
В другой ячейке используйте формулу РАЗДАТ, в том числе с параметром «гм». «гм» возвращает количество оставшихся месяцев после последнего полного года.
3. Используйте другую формулу для поиска дней.
Теперь нужно узнать количество оставшихся дней. Для этого мы впишем формулу другого типа, как показано выше. Эта формула вычитает первый день окончания месяца (01.05.2016) из исходной даты окончания в ячейке E17 (06.05.2016). Вот как это делается: сначала функция ДАТА создает дату 01.05.2016. Она создается с помощью года в ячейке E17 и месяца в ячейке E17. 1 обозначает первый день месяца. Результатом функции ДАТА будет 01.05.2016. Затем мы вычитаем эту дату из исходной даты окончания в ячейке E17 (06.05.2016), в результате чего получается 5 дней.
Предупреждение: Не рекомендуется использовать аргумент «md» в аргументе РАЗДАТОЧНЫЕ, так как он может вычислить неправильные результаты.
4. Необязательно: объединяйте три формулы в одну.
Все три вычисления можно поместить в одну ячейку, как в этом примере. Используйте амперанда, кавычка и текст. Это длинная формула, но по крайней мере она все в одной формуле. Совет. Нажмите ALT+ВВОД, чтобы ввести разрывы строк в формулу. Это упрощает чтение. Кроме того, если вы не видите всю формулу, нажмите CTRL+SHIFT+U.
Скачивание примеров
Вы можете скачать образец книги со всеми примерами из этой статьи. Вы можете следовать за формулами или создать собственные.
Другие вычисления даты и времени
Как было по мере того, как вы видели, функция РАЗНОДАТ вычисляет разницу между датой начала и датой окончания. Однако вместо конкретных дат в формуле можно использовать функцию СЕГОДНЯ(). При использовании функции СЕГОДНЯ() Excel использует текущую дату вашего компьютера для даты. Имейте в виду, что при повторном повторном открытие файла в будущем это изменение изменится.
Обратите внимание, что на момент написания статьи этот день был 6 октября 2016 г.
Используйте networkDAYS. Функция INTL, если нужно вычислить количество рабочих дней между двумя датами. Вы также можете исключить выходные дни и праздники.
Прежде чем начать: Решите, нужно ли исключить даты праздников. Введите список дат праздников в отдельной области или на отдельном листе. Поместите каждую праздниковую дату в собственную ячейку. Затем выберем эти ячейки, выберем «Формулы> «Определить имя». Привяжем диапазон MyHolidays инажмите кнопку «ОК». Затем создайте формулу с помощью действий ниже.
1. Введите даты начала и окончания.
В этом примере дата начала находится в ячейке D53, а даты окончания — в ячейке E53.
2. В другой ячейке введите формулу, например:
Введите формулу, как в примере выше. 1 в формуле посвеякает субботы и воскресенье в качестве выходных дней и исключает их из общего числа.
Примечание. В Excel 2007 нет networkDAYS. Функция INTL. Однако в нем есть и NETWORKDAYS. В Excel 2007 пример будет выглядеть так: =NETWORKDAYS(D53;E53). Вы не указываете 1, так как в networkDAYS предполагается, что выходные — в субботу и воскресенье.
3. При необходимости измените 1.
Если суббота и воскресенье не являются выходными днями, измените число 1 в списке IntelliSense. Например, 2 являются выходными днями по понедельникам и воскресеньям.
Если вы используете Excel 2007, пропустите этот шаг. Функция NETWORKDAYS в Excel 2007 всегда предполагает, что выходные — в субботу и воскресенье.
4. Введите название диапазона праздников.
Если вы создали название диапазона праздников в разделе «Перед началом» выше, введите его в конце, как понравится. Если у вас нет праздников, оставьте запятую и MyHolidays. Если вы используете Excel 2007, в примере выше будет такой пример: =NETWORKDAYS(D53,E53,MyHolidays).
Совет. Если вы не хотите ссылаться на название диапазона праздников, можно также ввести диапазон, например D35:E:39. Или введите в формулу каждый праздник. Например, если ваши праздники были 1 и 2 января 2016 г., введите их так: =ДЕНЬДНИ. INTL(D53,E53,1,<"01.01.2016","02.01.2016">). В Excel 2007 все выглядит так: =NETWORKDAYS(D53;E53;<"01.01.2016";"02.01.2016">)
Вы можете вычислить затращенное время, вычтя одно время из другого. Сначала поместите время начала в ячейку, а время окончания в другую. Обязательно введите полный текст, включая часы, минуты и пробел перед 18:00 или после 13:00. Ниже рассказывается, как это сделать.
1. Введите время начала и окончания.
В этом примере время начала находится в ячейке D80, а время окончания — в ячейке E80. Не забудьте ввести часы, минуты и пробелы до am или PM.
2. Задай формат ч:мм.AM/PM.
Выберите обе даты и нажмите CTRL+1 (или +1 на Mac). Выберите custom > h:mm AM/PM,если оно еще не настроено.
3. Вычитать два раза.
В другой ячейке вычитайте ячейку времени начала из ячейки времени окончания.
4. Установите формат ч:мм.
Нажмите клавиши CTRL+1 (или +1 на Mac). Выберите вариант «> ч:мм», чтобы исключить из результатов am и PM.
Чтобы вычислить время между двумя датами и временем, можно просто вычесть одно из другого. Однако необходимо применить форматирование к каждой ячейке, чтобы excel возвращал нужный результат.
1. Введите две полные даты и время.
В одной ячейке введите полную дату и время начала. В другой ячейке введите дату и время окончания. Каждая ячейка должна иметь месяц, день, год, часы, минуты и пробел перед am или PM.
2. Установите формат «14.03.2012» в 13:30.
Выберем обе ячейки и нажмите CTRL+1 (или +1 на Mac). Затем выберите «Дата> 14.03.2012, 13:30. Это не та дата, которая будет заданной вами, а только пример того, как будет выглядеть формат. Обратите внимание, что в версиях, предшествующих Excel 2016, этот формат может иметь другой пример даты, например 14.03.01 13:30.
3. Вычитать два.
В другой ячейке вычитайте дату и время начала из даты и времени окончания. Скорее всего, результат будет выглядеть как число и десятичность. Это можно исправить на следующем шаге.
4. Установите формат [ч]:мм.
Нажмите клавиши CTRL+1 (или +1 на Mac). Выберите пункт (все форматы). В поле «Тип» введите [ч]:мм.
Расчет количества дней между датами в Эксель
Довольно часто при работе датами в таблице Эксель возникает необходимость определения временного промежутка между ними, который измеряется в днях. В Excel существуют различные способы для выполнения данной задачи. Давайте рассмотрим их.
Расчет разности дат
Для корректной работы с датами сперва нужно задать ячейкам соответствующий формат. В противном случае возможны проблемы с корректным отображением дат, что сделает невозможным их дальнейшую обработку.
На самом деле Эксель способен самостоятельно определять формат ячейки после ввода в нее информации. Но этот механизм не всегда срабатывает как надо, поэтому стоит заранее самостоятельно настроить формат ячеек или проверить, правильно ли его определила программа.
- Для начала выделяем целевой диапазон ячеек, воспользовавшись зажатой левой кнопкой мыши.
- по умолчанию мы должны оказаться во вкладке “Число” (если это не так, переключаемся в нее);
- в списке “Числовые форматы” находим позицию “Дата” и кликаем на нее;
- в поле “Тип” выбираем нужный образец представления данных, в соответствии с которым они будут отображаться на листе;
- нажимаем OK.
Метод 1: использование формулы вычитания
Начнем, пожалуй, с самого простого способа – вычитания двух дат, представленного в виде обычной формулы.
- Вносим две даты, между которыми будем определять разницу в днях, в две разные ячейки отформатированного ранее диапазона.
- Теперь выделим ячейку, в которой планируем отобразить результат нашего вычисления.
ВАЖНО: Количество дней обозначается простым целым числом, следовательно, ячейка для его вывода должна иметь отличный от “Дата” формат, а именно – “Общий“. В противном случае полученный результат будет отображаться в формате даты, что не позволит оценить корректность проведенных вычислений. Для определения текущего формата ячейки достаточно взглянуть на соответствующее поле, расположенное в разделе инструментов “Число” на ленте вкладки “Главная“.
- в итоговую ячейку вводим знак “=“;
- кликаем по ячейке с конечной датой (более поздней);
- вводим с клавиатуры символ “–” (знак минус);
- кликаем по ячейке с начальной датой.
Метод 2: функция РАЗНДАТ
Следующий способ – это определение разницы между двумя датами при помощи функции РАЗНДАТ.
Функция имеет следующий синтаксис: =РАЗНДАТ(начальная_дата;конечная_дата;единица).
Если с двумя первыми аргументами все понятно – их суть соответствует названию, то на третьем (“единица“) стоит остановиться подробнее, так как именно он позволяет варьировать результат использования функции, выбирая единицу расчета разницы между датами:
- “d” — количество дней между датами;
- “m” — количество полных месяцев между датами;
- “y” — количество полных лет между датами;
- “YM” — разница между датами в месяцах;
- “MD” — разница между датами в днях, без учета месяцев и лет;
- “YD” — разница между датами в днях, без учета лет.
В нашем случае покажем пример использование аргумента “YD”, так как целью расчета является определение количества дней между датами в пределах года.
Основное отличие от простого вычитания одной даты из другой – в порядке следования аргументов функции: в качестве первого аргумента выбирается начальная (более ранняя дата), а в качестве второго – конечная (более поздняя). Опишем ниже алгоритм вычислений.
- Выбираем целевую ячейку, проверяем ее формат по способу, описанному выше.
- Описываемая функция отсутствует в Мастере функций, поэтому вводим ее в ячейку вручную, строго придерживаясь синтаксиса.
- Жмем Enter и проверяем полученный результат. Как мы видим, он аналогичен тому, который мы получили, используя простую формулу вычитания. Значит все сделано верно.
Метод 3: функция ЧИСТРАБДНИ для определения количества рабочих дней
Третий описываемый метод позволяет вычислить количество дней с дополнительным условием – исключением из него нерабочих (выходных и праздничных) дней.
В данном методе используется функция ЧИСТРАБДНИ со следующим синтаксисом: =ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники]).
Первые два аргумента аналогичны функции РАЗНДАТ. Последний аргумент является опциональным, то есть функция будет работать и без его указания. Однако именно он позволяет учесть в критериях вычисления нерабочие праздничные дни, так как по умолчанию из общего количества уберутся только субботы и воскресенья.
Приступаем к вычислениям:
- Так как описываемая функция присутствует в списке Мастера функций, воспользуемся им для большей наглядности: встаем на ячейку, куда будем выводить результат и щелкаем по кнопке “Вставить функцию” (fx), расположенной слева от строки формул.
- В открывшемся окне Мастера функций:
- выбираем категорию “Полный алфавитный перечень”;
- находим и кликаем в списке операторов по строке “ЧИСТРАБДНИ”;
- нажимаем ОК.
- Перед нами появится окно аргументов функции. Здесь можно ввести адреса ячеек вручную или, находясь в поле для заполнения значений аргумента, кликнуть по нужной ячейке на листе. Выбрав начальную и конечную дату, а также указав праздничный день (адрес ячейки), нажимаем ОК.
- Предположим, в этот раз мы заранее не задали формат итоговой ячейки как “Общий”. Тогда мы получим результат, отображающийся в виде даты.
- Следовательно, необходимо снова проверить формат по алгоритму, описанному выше и изменить его на “Общий”.
Заключение
С помощью описанных выше методов можно достаточно легко посчитать количество дней между двумя датами, как с наличием дополнительных критериев, так и без них. Формула вычитания и функция РАЗНДАТ прекрасно подойдут для простого подсчета дней, а функция ЧИСТРАБДНИ поможет с расчетом количества именно рабочих дней между датами. Окончательный выбор зависит от поставленной перед пользователем задачи.
Функция РАЗНДАТ() — Вычисление разности двух дат в днях, месяцах, годах в EXCEL
history 8 апреля 2013 г.
-
Группы статей
- Год
- Месяц
- Срок, Возраст, Стаж
Если Вам требуется рассчитать стаж (страховой) в годах, месяцах, днях, то, пожалуйста, воспользуйтесь расчетами выполненными в статье Расчет страхового (трудового) стажа в MS EXCEL .
Функции РАЗНДАТ( ) нет в справке EXCEL2007 и в Мастере функций ( SHIFT + F 3 ), но она работает, хотя и не без огрех.
Синтаксис функции:
РАЗНДАТ(начальная_дата; конечная_дата; способ_измерения)
Аргумент начальная_дата должна быть раньше аргумента конечная_дата .
Аргумент способ_измерения определяет, как и в каких единицах будет измеряться интервал между начальной и конечной датами. Этот аргумент может принимать следующие значения:
Значение
Описание
разница в полных месяцах
разница в полных годах
разница в полных месяцах без учета лет
разница в днях без учета месяцев и лет ВНИМАНИЕ! Функция для некоторых версий EXCEL возвращает ошибочное значение, если день начальной даты больше дня конечной даты (например, в EXCEL 2007 при сравнении дат 28.02.2009 и 01.03.2009 результат будет 4 дня, а не 1 день). Избегайте использования функции с этим аргументом. Альтернативная формула приведена ниже.
разница в днях без учета лет ВНИМАНИЕ! Функция для некоторых версий EXCEL возвращает ошибочное значение. Избегайте использования функции с этим аргументом.
Ниже приведено подробное описание всех 6 значений аргумента способ_измерения , а также альтернативных формул (функцию РАЗНДАТ() можно заменить другими формулами (правда достаточно громоздкими). Это сделано в файле примера ).
В файле примера значение аргумента начальная_дата помещена в ячейке А2 , а значение аргумента конечная_дата – в ячейке В2 .
1. Разница в днях («d»)
Формула =РАЗНДАТ(A2;B2;»d») вернет простую разницу в днях между двумя датами.
Пример1: начальная_дата 25.02.2007, конечная_дата 26.02.2007 Результат: 1 (день).
Этот пример показыват, что при подсчете стажа необходимо использовать функцию РАЗНДАТ() с осторожностью. Очевидно, что если сотрудник работал 25 и 26 февраля, то отработал он 2 дня, а не 1. То же относится и к расчету полных месяцев (см. ниже).
Пример2: начальная_дата 01.02.2007, конечная_дата 01.03.2007 Результат: 28 (дней)
Пример3: начальная_дата 28.02.2008, конечная_дата 01.03.2008 Результат: 2 (дня), т.к. 2008 год — високосный
Эта формула может быть заменена простым выражением =ЦЕЛОЕ(B2)-ЦЕЛОЕ(A2) . Функция ЦЕЛОЕ() округляет значение до меньшего целого и использована для того случая, если исходные даты введены вместе с временем суток ( РАЗНДАТ() игнорирует время, т.е. дробную часть числа, см. статью Как Excel хранит дату и время ).
Примечание : Если интересуют только рабочие дни, то к оличество рабочих дней между двумя датами можно посчитать по формуле =ЧИСТРАБДНИ(B2;A2)
2. Разница в полных месяцах («m»)
Формула =РАЗНДАТ(A2;B2;»m») вернет количество полных месяцев между двумя датами.
Пример1: начальная_дата 01.02.2007, конечная_дата 01.03.2007 Результат: 1 (месяц)
Пример2: начальная_дата 01.03.2007, конечная_дата 31.03.2007 Результат: 0
При расчете стажа, считается, что сотрудник отработавший все дни месяца — отработал 1 полный месяц. Функция РАЗНДАТ() так не считает!
Пример3: начальная_дата 01.02.2007, конечная_дата 01.03.2009 Результат: 25 месяцев
Формула может быть заменена альтернативным выражением: =12*(ГОД(B2)-ГОД(A2))-(МЕСЯЦ(A2)-МЕСЯЦ(B2))-(ДЕНЬ(B2)
Внимание : В справке MS EXCEL (см. раздел Вычисление возраста) имеется кривая формула для вычисления количества месяце между 2-мя датами:
Если вместо функции ТДАТА() — текущая дата использовать дату 31.10.1961, а в А3 ввести 01.11.1962, то формула вернет 13, хотя фактически прошло 12 месяцев и 1 день (ноябрь и декабрь в 1961г. + 10 месяцев в 1962г.).
3. Разница в полных годах («y»)
Формула =РАЗНДАТ(A2;B2;»y») вернет количество полных лет между двумя датами.
Пример1: начальная_дата 01.02.2007, конечная_дата 01.03.2009 Результат: 2 (года)
Пример2: начальная_дата 01.04.2007, конечная_дата 01.03.2009 Результат: 1 (год)
Подробнее читайте в статье Полный возраст или стаж .
Формула может быть заменена альтернативным выражением: =ЕСЛИ(ДАТА(ГОД(B2);МЕСЯЦ(A2);ДЕНЬ(A2))
4. Разница в полных месяцах без учета лет («ym»)
Формула =РАЗНДАТ(A2;B2;»ym») вернет количество полных месяцев между двумя датами без учета лет (см. примеры ниже).
Пример1: начальная_дата 01.02.2007, конечная_дата 01.03.2009 Результат: 1 (месяц), т.к. сравниваются конечная дата 01.03.2009 и модифицированная начальная дата 01.02. 2009 (год начальной даты заменяется годом конечной даты, т.к. 01.02 меньше чем 01.03)
Пример2: начальная_дата 01.04.2007, конечная_дата 01.03.2009 Результат: 11 (месяцев), т.к. сравниваются конечная дата 01.03.2009 и модифицированная начальная дата 01.04. 2008 (год начальной даты заменяется годом конечной даты за вычетом 1 года , т.к. 01.04 больше чем 01.03)
Вся эта вакханалия нужна, например, для подсчета сколько полных дней, месяцев и лет прошло с определенной даты до сегодняшнего дня. Подробнее читайте в одноименной статье Сколько лет, месяцев, дней прошло с конкретной даты .
Формула может быть заменена альтернативным выражением: =ОСТАТ(C7;12) В ячейке С7 должна содержаться разница в полных месяцах (см. п.2).
5. Разница в днях без учета месяцев и лет («md»)
Формула =РАЗНДАТ(A2;B2;»md») вернет количество дней между двумя датами без учета месяцев и лет. Использовать функцию РАЗНДАТ() с этим аргументом не рекомендуется (см. примеры ниже).
Пример1: начальная_дата 01.02.2007, конечная_дата 06.03.2009 Результат1: 5 (дней), т.к. сравниваются конечная дата 06.03.2009 и модифицированная начальная дата 01. 03 . 2009 (год и месяц начальной даты заменяется годом и месяцем конечной даты, т.к. 01 меньше чем 06)
Пример2: начальная_дата 28.02.2007, конечная_дата 28.03.2009 Результат2: 0, т.к. сравниваются конечная дата 28.03.2009 и модифицированная начальная дата 28. 03 . 2009 (год и месяц начальной даты заменяется годом и месяцем конечной даты)
Пример3: начальная_дата 28.02.2009, конечная_дата 01.03.2009 Результат3: 4 (дня) — совершенно непонятный и НЕПРАВИЛЬНЫЙ результат. Ответ должен быть =1. Более того, результат вычисления зависит от версии EXCEL.
Версия EXCEL 2007 с SP3:
Результат – 143 дня! Больше чем дней в месяце!
Версия EXCEL 2007:
Разница между 28.02.2009 и 01.03.2009 – 4 дня!
Причем в EXCEL 2003 с SP3 формула возвращает верный результат 1 день. Для значений 31.12.2009 и 01.02.2010 результат вообще отрицательный (-2 дня)!
Не советую использовать формулу с вышеуказанным значением аргумента. Формула может быть заменена альтернативным выражением: =ЕСЛИ(ДЕНЬ(A2)>ДЕНЬ(B2); ДЕНЬ(КОНМЕСЯЦА(ДАТАМЕС(B2;-1);0))-ДЕНЬ(A2)+ДЕНЬ(B2); ДЕНЬ(B2)-ДЕНЬ(A2))
Данная формула лишь эквивалетное (в большинстве случаев) выражение для РАЗНДАТ() с параметром md. О корректности этой формуле читайте в разделе «Еще раз о кривизне РАЗНДАТ()» ниже.
6. Разница в днях без учета лет («yd»)
Формула =РАЗНДАТ(A2;B2;»yd») вернет количество дней между двумя датами без учета лет. Использовать ее не рекомендуется по причинам, изложенным в предыдущем пункте.
Результат, возвращаемый формулой =РАЗНДАТ(A2;B2;»yd») зависит от версии EXCEL.
Формула может быть заменена альтернативным выражением: =ЕСЛИ(ДАТА(ГОД(B2);МЕСЯЦ(A2);ДЕНЬ(A2))>B2; B2-ДАТА(ГОД(B2)-1;МЕСЯЦ(A2);ДЕНЬ(A2)); B2-ДАТА(ГОД(B2);МЕСЯЦ(A2);ДЕНЬ(A2)))
Еще раз о кривизне РАЗНДАТ()
Найдем разницу дат 16.03.2015 и 30.01.15. Функция РАЗНДАТ() с параметрами md и ym подсчитает, что разница составляет 1 месяц и 14 дней. Так ли это на самом деле?
Имея формулу, эквивалентную РАЗНДАТ() , можно понять ход вычисления. Очевидно, что в нашем случае количество полных месяцев между датами = 1, т.е. весь февраль. Для вычисления дней, функция находит количество дней в предыдущем месяце относительно конечной даты, т.е. 28 (конечная дата принадлежит марту, предыдущий месяц — февраль, а в 2015г. в феврале было 28 дней). После этого отнимает день начала и прибавляет день конечной даты = ДЕНЬ(КОНМЕСЯЦА(ДАТАМЕС(B6;-1);0))-ДЕНЬ(A6)+ДЕНЬ(B6) , т.е. 28-30+16=14. На наш взгляд, между датами все же 1 полный месяц и все дни марта, т.е 16 дней, а не 14! Эта ошибка проявляется, когда в предыдущем месяце относительно конечной даты, дней меньше, чем дней начальной даты. Как выйти из этой ситуации?
Модифицируем формулу для расчета дней разницы без учета месяцев и лет:
При применении новой функции необходимо учитывать, что разница в днях будет одинаковой для нескольких начальных дат (см. рисунок выше, даты 28-31.01.2015). В остальных случаях формулы эквивалентны. Какую формулу применять? Это решать пользователю в зависимости от условия задачи.
Функция РАБДЕНЬ для расчета количества рабочих дней в Excel
Функция РАБДЕНЬ предназначена для определения даты начала или окончания какого-либо мероприятия относительно заданной начальной или конечной даты с учетом числа выходных и праздничных дней, и возвращает соответствующее значение в виде данных формата Дата.
Функция РАБДЕНЬ.МЕЖД предназначена для определения даты, равной сумме текущей даты и длительности мероприятия, и возвращает соответствующее числовое значение в коде времени Excel.
Примеры использования функций РАБДЕНЬ и РАБДЕНЬ.МЕЖД в Excel
Пример 1. Согласно расчетам, для выполнения проекта сотрудником фирмы потребуется 236 часов его беспрерывной работы. Дата начала проекта – 18.08.2018. Определить дату окончания работы над проектом. В ближайшие 30 дней праздников нет, выходные – суббота и воскресенье.
Вид исходной таблицы данных:
Для решения используем формулу:
- B5 – дата начал события (работы над проектом);
- B6/B8 – число рабочих дней, требуемых для реализации проекта, при условии, что рабочий день длится 8 ч.
Автоматически определилось число для сдачи реализованного проекта по ключ.
Как посчитать количество рабочих дней между датами
Чтобы посчитать количество рабочих или выходных дней между двумя датами в Excel следует использовать функцию ЧИСТРАБДНИ:
Как видите всего в невисокосном 2019-му 262 рабочих дней в году и 103 дня выходных (262+103=365).
Пример 2. Курс предмета в учебном заведении рассчитан на 46 занятий, которые проводятся в понедельник, среду и пятницу. Начало изучения предмета – 3.09.2018. Ближайшие праздники: 17.09.2018, 28.09.2018, 7.10.2018. Определить дату последнего занятия.
Вид исходной таблицы данных:
Формула для расчета:
Последнее занятие будет 24 декабря 2018 года.
Формула оптимального расчета количества рабочих дней между датами
Пример 3. Для выполнения работы в срок было предложено два варианта: увеличить часы в рабочих днях до 10 ч в день или ввести шестидневную рабочую неделю. Расчетная длительность выполнения работы – 127 ч. Выбрать оптимальный вариант, если дата начала проекта – 20.08.2018.
Вид таблицы данных:
Для решения используем следующую формулу:
РАБДЕНЬ.МЕЖД(B3;B2/C5;C6);»Вариант 2″;»Вариант 1″)’ >
Функция ЕСЛИ выполняет проверку значений, возвращаемых функциями РАБДЕНЬ.МЕЖДУ и возвращает соответствующий результат. Чем больше дата, тем больше времени потребуется на реализацию проекта.
То есть, чтобы быстрее выполнить работу, лучше увеличить длительность рабочего дня до 10 часов.
Особенности использования функций РАБДЕНЬ и РАБДЕНЬ.МЕЖД в Excel
Функция РАБДЕНЬ имеет следующий синтаксис:
=РАБДЕНЬ( нач_дата;количество_дней; [праздники])
- нач_дата – обязательный аргумент, характеризующий значения формата Дата, которое является точкой отсчета (началом какого-либо события).
- количество_дней – обязательный аргумент, принимающий данные числового типа, которые характеризуют число рабочих дней, прошедших после начала какого-либо события или предшествующих ему. Считается, что данное количество не содержит дни, которые являются праздниками или выходными днями. Для обратного отсчета относительно даты, указанной в качестве аргумента нач_дата, данный аргумент следует оказать в виде отрицательного числа.
- [праздники] – необязательный аргумент, принимающий данные формата Дата, указывающие одну или несколько дат, соответствующих праздничным дням. В качестве данного аргумента может быть передан массив ячеек.
Функция РАБДЕНЬ.МЕЖД имеет следующий синтаксис:
=РАБДЕНЬ.МЕЖД( нач_дата;количество_дней; [выходной];[праздники])
- нач_дата – обязательный аргумент, характеризующий дату начала какого-либо события в виде данных формата Дата;
- количество_дней – обязательный аргумент в виде данных числового типа, характеризующих число дней, которые предшествуют началу какого-либо события (отрицательное число) либо обозначают какую-либо будущую дату (положительное число);
- [праздники] – необязательный аргумент, принимающий одно или несколько значений формата Дата, указывающих даты праздничных дней;
- [выходной] – необязательный аргумент в виде строки из 7 последовательно записанных значений из диапазона от 0 до 1, характеризующей количество выходных дней и их позицию по дням недели, или числового значения из диапазона от 1 до 17. Примеры некоторых вариантов записи данного аргумента:
- 1 (или явно не указан) – выходными днями являются суббота и воскресенье.
- 2 – воскресенье и понедельник.
- 3 – понедельник и вторник (и т. д).
- 11 – только понедельник.
- 12 – только вторник (и т. д.).
- «0000011» — суббота и воскресенье».
- «1000001» — воскресенье и понедельник (и т. д.).
- При использовании обеих рассматриваемых функций необходимо иметь ввиду, что Excel поддерживает даты начиная от 1 января 1900 г. до 31 декабря 9999 г. Если аргумент нач_дата или дата любого праздничного дня представлены в виде даты, не принадлежащей к диапазону допустимых значений, обе функции вернут код ошибки #ЧИСЛО!.
- Если в результате сложения даты, представленной первым аргументом любой из рассматриваемых функций, а также количества дней, заданных вторым аргументом функции, с учетом определенного количества праздничных и выходных дней будет получено значение, находящееся вне диапазона допустимых значений дат, будет возвращен код ошибки #ЧИСЛО!.
- Если аргумент количество_дней представлен в виде дробного числа, дробная часть будет автоматически усечена.
- Функция РАБДЕНЬ.МЕЖД возвращает код ошибки #ЧИСЛО!, если в качестве аргумента [выходной] было передано число не из диапазона допустимых значений или строка, содержащая недопустимые символы, только единицы («1111111») или состоящая из менее чем семи символов.
- При вводе дат в качестве аргументов рассматриваемых функций рекомендуется использовать не текстовые представления дат (например, «10.02.2018»), а функции, возвращающие данные в формате даты (например, ДАТА(18;02;10)).
Примечание: в отличие от функции РАБДЕНЬ, предусматривающей возможность указывать лишь даты праздничных дней, функция РАБДЕНЬ.МЕЖДУ позволяет определять число выходных в неделю и указывать, какими днями в неделе являются выходные (например, вместо привычных субботы и воскресенья можно указать вторник и среда).