Очень часто во время сведения количества дней, которые прошли от начальной даты до конечной, не нужно учитывать выходные дни. По выходным фирмы обычно не работают значит для вычислений следует не учитывать такие дни.
Дата и время в Excel – это числа сформатированные специальным образом. Датой является целая часть числа, а время (часы и минуты) – это дробная часть.
По умолчанию число 1 соответствует дате 01 января 1900 года. То есть каждая дата – это количество дней прошедших от 01.01.1900. На данном уроке детально рассмотрим даты, а на следующих уроках – время.
- Как точно посчитать сколько прошло времени
- Вычисление даты Excel
- Разница в полных месяцах без учета лет («ym»)
- Рассчитать дату выхода на пенсию
- Разница в полных месяцах («m»)
- Функция ЧИСТРАБДНИ для определения количества рабочих дней
- Обратная задача
- Рассчитать совпадение дат в днях
- Рассчитать истекшее рабочее время
- Еще раз о кривизне РАЗНДАТ()
- Рассчитать оставшиеся дни
- Количество понедельников между двумя датами
- Получать рабочие дни между датами
- Рассчитать срок годности
- Подсчитайте дни недели между датами
- Разница в днях без учета лет («yd»)
- Год/ лет, месяца/ месяцев, дня/ дней
- Разница в днях («d»)
- Функция РАЗНДАТ
- Расчет разности дат
- Получать рабочие часы между датами собственного расписания
- О вычислении страхового стажа
- Как в Excel посчитать дни между датами?
- Работа с датами в Excel
- Ввод даты в ячейку Excel
- Особенности использования функции РАЗНДАТ
- Расчет кол-ва рабочих дней
- Получить дни, месяцы и годы между датами
- Разница в полных годах («y»)
- Разница в днях без учета месяцев и лет («md»)
- Подсчитывать праздники между двумя датами
- Использование формулы вычитания
- Расчет кол-ва неполных рабочих дней между двумя датами
- Создание диапазона дат с двух дат
- Примеры использования функции РАЗНДАТ
- Как посчитать сроки окончания действия договора в Excel
- Пример расчета количества рабочих дней без выходных
- Синтаксис функции
- Рассчитать года между датами
- Стандартный расчет количества дней
- С помощью функции ДНИ
- С помощью функции РАЗНДАТ
- Вычисление возраста по дате рождения в Excel
- Список праздников между двумя датами
- Заключение
Как точно посчитать сколько прошло времени
В документе записаны даты рождения сотрудников. Требуется выяснить, сколько лет, месяцев и дней исполнилось каждому из них на момент сегодняшнего дня.

Используя уже знакомую формулу =РАЗНДАТ(B2;СЕГОДНЯ();»Y») для ячейки С2 получим количество полных лет возраста каждого из работников. Протянем эту формулу на весь столбец ниже.

Модифицировав формулу, использованную выше, заменяем значение единицы с «Y» на «YM». Итоговый вид формулы: =РАЗНДАТ(B2;СЕГОДНЯ();»YM»). Таким образом, мы получим на выходе количество полных месяцев возраста, не учитывая прошедшие полные года. Протянем формулу на весь столбец ниже.

В конце нам понадобятся и дни, не вошедшие в месяц. Снова заменяем значение единицы с «YM» на «YD» и получим формулу следующего вида, в которой на выходе будет число дней: =РАЗНДАТ(B2;СЕГОДНЯ();»YD»).

Такое решение можно элегантно улучшить, если использовать функцию СПЕЦПИТЬ() и вызвать окошко аргументов, приведя функцию в следующий вид: =СЦЕПИТЬ(C2;» лет «;D2;» месяцев «;E2;» дня(-ей)»)

Вычисление даты Excel
На чистом листе в ячейки А1:B1 введите 01.01.1900, а в ячейках A2:B2 вводим 01.01.1901. Теперь меняем формат ячеек на «числовой» в выделенном диапазоне B1:B2. Для этого можно нажать комбинацию клавиш CTRL+SHIFT+1.

B1 теперь содержит число 1, а B2 – 367. То есть прошел один високосный год (366 дней) и 1 день.
Способ отображения даты можно задать с помощью диалогового окна «Формат ячеек». Для его вызова нажмите: CTRL+1. На закладке «Число» выберите в списке «Числовые форматы» — «Дата». В разделе «Тип» отображаются самые популярные форматы для отображения дат.

На следующем уроке мы на готовых примерах будем работать со временем и периодами суток.
Разница в полных месяцах без учета лет («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)
Вся эта вакханалия нужна, например, для подсчета сколько полных дней, месяцев и лет прошло с определенной даты до сегодняшнего дня. Подробнее читайте в одноименной статье
Сколько лет, месяцев, дней прошло с конкретной даты
.
Формула может быть заменена альтернативным выражением:
В ячейке
С7
должна содержаться разница в полных месяцах (см. п.2).
Рассчитать дату выхода на пенсию
= ДАТАМЕС(A1;12 * 60)
Чтобы рассчитать дату выхода на пенсию на основе даты рождения, вы можете использовать функцию ДАТАМЕС.
В показанном примере формула в D5:
Функция ДАТАМЕС является полностью автоматической и возвращает дату месяцев в будущем или прошлом, когда дана дата и количество месяцев, которые нужно пройти.
В этом случае мы хотим, чтобы дата в будущем составляла 60 лет, начиная с даты рождения, поэтому мы можем написать такую формулу для данных в примере:
= ДАТАМЕС(C6;12 * 60)
Дата начинается с даты рождения в столбце С (дат рождения). Нам требуется эквивалент 60 лет в месяцах. Поскольку вы, вероятно, не знаете, сколько месяцев в 60 годах, хороший способ решения данного вопроса — встроить математику для этого вычисления непосредственно в формулу:
Excel решит это (720), а затем отправит в ДАТАМЕС. Вклад расчетов, таким образом, может помочь сделать предположения и цель аргумента понятными.
Примечание: ДАТАМЕС возвращает дату в формате серийного номера Excel, поэтому убедитесь, что вы применяете форматирование даты.
Формула, используемая для получения оставшихся лет:
= ДОЛЯГОДА (СЕГОДНЯ (); D6)
Вы можете использовать этот же подход для расчета возраста от даты рождения.
Что, если вы просто хотите знать год выхода на пенсию? В этом случае вы можете отформатировать дату, возвращенную ДАТАМЕС, в формате пользовательских чисел «гггг», или, если вы действительно хотите только год, вы можете заключить результат в функцию ГОД следующим образом:
= ГОД (ДАТАМЕС(A1;12 * 60))
Эта же идея может быть использована для расчета дат для широкого спектра вариантов использования:
- Срок действия гарантии
- Срок действия членства
- Дата окончания рекламного периода
- Истечение срока годности
- Даты осмотра
- Срок действия сертификата
Разница в полных месяцах («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 месяцев
Внимание
: В справке MS EXCEL (см. раздел Вычисление возраста) имеется кривая формула для вычисления количества месяце между 2-мя датами:
Если вместо функции ТДАТА() — текущая дата использовать дату 31.10.1961, а в А3 ввести 01.11.1962, то формула вернет 13, хотя фактически прошло 12 месяцев и 1 день (ноябрь и декабрь в 1961г. + 10 месяцев в 1962г.).
Функция ЧИСТРАБДНИ для определения количества рабочих дней
Третий описываемый метод позволяет вычислить количество дней с дополнительным условием – исключением из него нерабочих (выходных и праздничных) дней.
Первые два аргумента аналогичны функции РАЗНДАТ. Последний аргумент является опциональным, то есть функция будет работать и без его указания. Однако именно он позволяет учесть в критериях вычисления нерабочие праздничные дни, так как по умолчанию из общего количества уберутся только субботы и воскресенья.
Приступаем к вычислениям:
- Так как описываемая функция присутствует в списке Мастера функций, воспользуемся им для большей наглядности: встаем на ячейку, куда будем выводить результат и щелкаем по кнопке “Вставить функцию” (fx), расположенной слева от строки формул.
- В открывшемся окне Мастера функций:
выбираем категорию “Полный алфавитный перечень”;находим и кликаем в списке операторов по строке “ЧИСТРАБДНИ”;нажимаем ОК. - выбираем категорию “Полный алфавитный перечень”;
- находим и кликаем в списке операторов по строке “ЧИСТРАБДНИ”;
- нажимаем ОК.
- Перед нами появится окно аргументов функции. Здесь можно ввести адреса ячеек вручную или, находясь в поле для заполнения значений аргумента, кликнуть по нужной ячейке на листе. Выбрав начальную и конечную дату, а также указав праздничный день (адрес ячейки), нажимаем ОК.
- Предположим, в этот раз мы заранее не задали формат итоговой ячейки как “Общий”. Тогда мы получим результат, отображающийся в виде даты.
- Следовательно, необходимо снова проверить формат по алгоритму, описанному выше и изменить его на “Общий”.
Обратная задача
Теперь решим обратную задачу: задав количество количество лет, месяцев и дней, рассчитаем конечную дату.
Конечную дату будем рассчитывать двумя способами: через функцию
и
Вычислив конечную дату, затем вычислим с помощью
разницу между ними (должна совпасть с заданной). И наконец, из конечной даты получим начальную, вычтя заданное количество лет, месяцев и дней с использованием формул:
Если для начальной даты 15.01.2015 (строка 8
в файле примера, лист Обратная задача
) все вычисления понятны и одинаковы (добавили 1 год, 2 месяца и 5 дней), получили 20.03.2015, разница составила теже 1 год, 2 месяца и 5 дней, расчетная начальная дата совпала с заданной начальной датой, то для 29.01.2015 все не так гладко (см. строку 9). Для наглядности прибавим 1 месяц.
Как мы уже знаем из статьи
Функция ДАТАМЕС() в MS EXCEL
функции
и
не эквивалентны при прибавлении месяцев:
При прибавлении месяцев между
и
существует разница. Прибавим к 29.01.2015 один месяц:
- вернет 28.02.2015, т.к. 30 февраля не существует, то функция вернет последний день месяца, т.е. 28.02.2014 («лишние» 2 дня будут отброшены);
- вернет 02.03.2015: «лишние» 2 дня (29 и 30 февраля) будут прибавлены к дате.
Расчет с помощью
кажется логичней, хотя функция
с этим не согласна: разницу, совпадающей с заданной она возвращает только для варианта с функцией
.
Расчетная начальная дата в обоих случаях не совпадает с заданной начальной датой: получим 01.02.2015 и 28.01.2015 вместо 29.01.2015.
Как быть? Вероятно, решение будет зависеть от конкретной задачи, стоящей перед пользователем. Необходимо помнить, что нужно использовать
при добавлении (вычитании) месяцев, а
— это недокументированная и, соответственно, не гарантирующая правильность расчетов функция. Об этой функции написана статья
Функция РАЗНДАТ() — Вычисление разности двух дат в днях, месяцах, годах в MS EXCEL
, в которой дается формула, учитывающая вышеуказанную ситуацию (см. раздел «Еще раз о кривизне
«).
Рассчитать совпадение дат в днях
= МАКС(МИН(конец1; конец2) -МАКС(начало1; начало2) +1;0)
Чтобы вычислить количество дней, которые перекрываются в двух диапазонах дат, вы можете использовать арифметику с базовыми датами вместе с функциями МИН и MAКС.
Даты Excel — это просто серийные номера, поэтому вы можете рассчитать длительность путем вычитания более ранней даты из более поздней даты.
Вот что происходит в основе формулы здесь:
Здесь просто вычитают более раннюю дату из более поздней даты. Чтобы определить, какие даты использовать для каждого сравнения диапазона дат, мы используем MИН для получения самой ранней даты окончания, а MAКС — для последней даты окончания.
Мы добавляем 1 к результату, чтобы убедиться, что мы считаем «столбы забора», а не «промежутки между столбами забора» (аналогия с Джоном Уокенбахом из Библии Excel 2010).
Наконец, мы используем функцию MAКС для захвата отрицательных значений и возврата нуля. Использование MAКС,таким образом, умный способ избежать использования ЕСЛИ.
Рассчитать истекшее рабочее время
Если вам нужно вычислить затраченное время, вы можете использовать простую формулу, которая вычитает время начала с момента окончания. Однако, когда время пересекает суточный рубеж, все может стать сложнее. Ниже приведено несколько способов, чтобы вычислить затраченное время, в зависимости от ситуации.
В Excel один день (24 часа) обозначается цифрой 1. Таким образом, 1 час — это 0.041666667 (то есть 1/24), 8 часов — 0,333, 12 часа — 0,50 и так далее. Короче говоря, вы можете думать о часах как о дробных частях дня.
Когда время начала и окончания одновременно в один и тот же день, тогда время начала по определению меньше времени окончания, и вы можете использовать простое вычитание, чтобы определить прошедшее время. Например, при стартовом времени 9:00 и в конце времени 17:00, вы можете просто использовать эту формулу:
конец — начало = прошедшее время
0;375 — 0;708 = 0;333 // 8 часов
Вычисление пройденного времени более сложно, если время пересекает дневную границу. Например, если время начала — 22:00 один день, а время окончания — 5:00 на следующий день, время окончания на самом деле меньше времени начала, а приведенная выше формула вернет отрицательное значение, которое вызовет Excel для отображения строки символов хеша (т. Е. ########).
Чтобы исправить эту проблему, вы можете использовать эту формулу для времен, пересекающих суточную границу:
= 1-конец + начало
Вычитая время начала с 1, вы получаете количество времени в первый день, который вы можете просто добавить к количеству времени во второй день, который совпадает со временем окончания.
Эта формула не будет работать для раз в тот же день, поэтому мы можем обобщить и комбинировать обе формулы внутри оператора ЕСЛИ следующим образом:
Теперь, когда оба времени в один и тот же день, где конец больше времени начала, поэтому используется простая формула. Но когда время на дневной границе используется вторая формула.
Это можно еще более упростить до этой элегантной формулы:
= ОСТАТ(конечный старт; 1)
Здесь функция ОСТАТ заботится о негативной проблеме, используя функцию ОСТАТ для «переворачивания» отрицательных значений в требуемое положительное значение.
Таким образом, приведенные выше формулы будут обрабатывать любой случай (оба раза в тот же день или начало в один день и в конце в следующего). Однако учтите, что они работают только на время, охватывающие всего один день. Если время превышает один день, вам потребуется другой подход. Один из подходов заключается в использовании как даты, так и времени, как описано ниже.
Если вам не нравится сложность вышеперечисленных решений или вам нужно рассчитать затраченное время, которое занимает более одного дня, просто исправить это просто добавить значение даты как в начале, так и в конце. Например, вы можете ввести 1 сентября 2016 года в 9:00, как показано ниже, с единственным промежутком времени между датой и временем:
Поскольку в нем хранятся и дата, и время, вы всегда можете вычесть начало с конца и получить правильный результат.
Обратите внимание: когда вы используете дату и время, вы можете форматировать значения любым способом. Вы можете применить формат, который показывает дату со временем, или формат, который отображает только время.
В этом примере используется формула в D8. Формула проста:
Еще раз о кривизне РАЗНДАТ()
Найдем разницу дат 16.03.2015 и 30.01.15. Функция
с параметрами md и ym подсчитает, что разница составляет 1 месяц и 14 дней. Так ли это на самом деле?
Имея формулу, эквивалентную
, можно понять ход вычисления. Очевидно, что в нашем случае количество полных месяцев между датами = 1, т.е. весь февраль. Для вычисления дней, функция находит количество дней в предыдущем месяце относительно конечной даты, т.е. 28 (конечная дата принадлежит марту, предыдущий месяц — февраль, а в 2015г. в феврале было 28 дней). После этого отнимает день начала и прибавляет день конечной даты =
, т.е. 28-30+16=14. На наш взгляд, между датами все же 1 полный месяц и все дни марта, т.е 16 дней, а не 14! Эта ошибка проявляется, когда в предыдущем месяце относительно конечной даты, дней меньше, чем дней начальной даты. Как выйти из этой ситуации?
Модифицируем формулу для расчета дней разницы без учета месяцев и лет:
При применении новой функции необходимо учитывать, что разница в днях будет одинаковой для нескольких начальных дат (см. рисунок выше, даты 28-31.01.2015). В остальных случаях формулы эквивалентны. Какую формулу применять? Это решать пользователю в зависимости от условия задачи.
Рассчитать оставшиеся дни
= Конец даты-начало даты
Чтобы вычислить дни, оставшиеся от одной даты к другой, вы можете использовать простую формулу, которая вычитает более раннюю дату из более поздней даты.
Даты в Excel — это только серийные номера, которые начинаются 1 января 1900 года. Если вы введете 1/1/1900 в Excel и отформатируете результат в формате «Общий», вы увидите цифру 1.
Это означает, что вы можете легко рассчитать дни между двумя датами, вычитая более раннюю дату из более поздней даты.
В показанном примере формула решается следующим образом:
Если вам необходимо рассчитать оставшиеся дни, используйте функцию СЕГОДНЯ следующим образом:
= Конец даты-СЕГОДНЯ()
Функция СЕГОДНЯ всегда возвращает текущую дату. Обратите внимание, что после того, как Конец даты прошел, вы начнете видеть отрицательные результаты, потому что значение, возвращаемое СЕГОДНЯ, будет больше, чем конечная дата.
Вы можете использовать эту версию формулы, чтобы отсчитывать дни до важных событий или этапов, подсчитывать дни до истечения срока членства и т. д.
Количество понедельников между двумя датами
Для поиска количества понедельников мы можем использовать ту же логику, которая использовалась выше при подсчете неполных рабочих дней.
Функция, которая выведет кол-во понедельников:
В этой формуле «0» означает рабочий день, а «1» — нерабочий день.
Формула рассчитывает количество рабочих дней, с учетом того что единственный рабочий день — это понедельник.
Аналогичным образом можно рассчитать количество любых, интересующих вас дней, между двумя датами.

Получать рабочие дни между датами
= ЧИСТРАБДНИ(нач_дата; кон_дата; праздники)
Чтобы вычислить количество рабочих дней между двумя датами, вы можете использовать функцию ЧИСТРАБДНИ. ЧИСТРАБДНИ автоматически исключает выходные и может также исключать настраиваемый список праздничных дней.
Например, если у вас есть дата 4 января 2016 года (понедельник) в ячейке B4 и 11 января 2016 года (также понедельник) в ячейке C4, эта формула вернет 6:
= ЧИСТРАБДНИ(B4; C4)
Обратите внимание, что ЧИСТРАБДНИ включает как начальную, так и конечную даты в расчете, если они являются рабочими днями.
ЧИСТРАБДНИ также может исключать настраиваемый список праздников. Например, если у вас есть даты отпуска в H1: H10, вы можете указать ЧИСТРАБДНИ не включать эти даты в качестве рабочих дней, добавив этот диапазон в качестве третьего аргумента в формуле:
= ЧИСТРАБДНИ(B4; C4; H1: H10)
Если вам нужно учитывать пользовательские выходные дни (например, выходные — это только суббота, воскресенье и понедельник и т. д.), Вам нужно переключиться на более надежную функцию ЧИСТРАБДНИ.МЕЖД, которая позволяет вам установить, какие дни недели считаются выходными, подавая аргумент в выходные дни в виде числового кода.
Рассчитать срок годности
= A1 + 30 // 30 дней
Чтобы вычислить срок действия в будущем, вы можете использовать различные формулы. В показанном примере формулы, используемые в столбце D:
= B5 + 30 // 30 дней
= B5 + 90 // 90 дней
= КОНМЕСЯЦА (B7;0) // конец месяца
= ДАТАМЕС (B8;1) // следующий месяц
= КОНМЕСЯЦА (B7;0) +1 // 1-го числа следующего месяца
= ДАТАМЕС(B10;12) // 1 год
В Excel даты — это просто серийные номера. В стандартной системе дат для окон, основанной в 1900 году, где 1 января 1900 года является номером 1. Это означает, что 1 января 2050 года серийный номер 54789.
Если вы рассчитываете дату n дней в будущем, вы можете добавлять дни непосредственно, как в первых двух формулах.
Чтобы рассчитывать по месяцам, вы можете использовать функцию ДАТАМЕС, которая возвращает ту же дату n месяцев в будущем или в прошлом.
Для расчета срока годности в конце месяца, используйте функцию КОНМЕСЯЦА, которая возвращает последний день месяца, n месяцев в будущем или в прошлом.
Самый простой способ рассчитать 1-й день месяца — использовать КОНМЕСЯЦА, чтобы получить последний день предыдущего месяца, а затем просто добавить 1 день.
Подсчитайте дни недели между датами
= СУММПРОИЗВ(- (ДЕНЬНЕД(СТРОКА(ДВССЫЛ (дата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» интерпретироваться как номера строк. Затем функция СТРОКА возвращает массив вроде этого:
Функция ДЕНЬНЕД оценивает эти числа как даты и возвращает этот массив:
Который тестируется на заданный день недели (6 в данном случае, начиная с D6). Как только результаты теста преобразуются в 1 и 0 с двойным дефисами, этот массив обрабатывается СУММПРОИЗВ:
Разница в днях без учета лет («yd»)
Формула
вернет количество дней между двумя датами без учета лет. Использовать ее не рекомендуется по причинам, изложенным в предыдущем пункте.
Результат, возвращаемый формулой
зависит от версии EXCEL.
Год/ лет, месяца/ месяцев, дня/ дней
В случае, если получается целое количество лет, то формула вернет результат в виде
37 г. 0 мес. 0 дн.
, что не очень красиво.
Воспользовавшись идеями, подсказанными нашим пользователем МСН, также просклоняем
месяцев/ месяца
и
дней/ дня
Окончательно результат будет выглядеть так:
37 лет 1 месяц 4 дня
.
Разница в днях («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 год — високосный
Эта формула может быть заменена простым выражением
. Функция
округляет значение до меньшего целого и использована для того случая, если исходные даты введены вместе с временем суток (
игнорирует время, т.е. дробную часть числа, см. статью
Как Excel хранит дату и время
).
Примечание
: Если интересуют только рабочие дни, то к
оличество рабочих дней
между двумя датами можно посчитать по формуле
Функция РАЗНДАТ
Следующий способ – это определение разницы между двумя датами при помощи функции РАЗНДАТ.
Функция имеет следующий синтаксис: =РАЗНДАТ(начальная_дата;конечная_дата;единица).
Если с двумя первыми аргументами все понятно – их суть соответствует названию, то на третьем (“единица“) стоит остановиться подробнее, так как именно он позволяет варьировать результат использования функции, выбирая единицу расчета разницы между датами:
- “d” — количество дней между датами;
- “m” — количество полных месяцев между датами;
- “y” — количество полных лет между датами;
- “YM” — разница между датами в месяцах;
- “MD” — разница между датами в днях, без учета месяцев и лет;
- “YD” — разница между датами в днях, без учета лет.
В нашем случае покажем пример использование аргумента “YD”, так как целью расчета является определение количества дней между датами в пределах года.
Основное отличие от простого вычитания одной даты из другой – в порядке следования аргументов функции: в качестве первого аргумента выбирается начальная (более ранняя дата), а в качестве второго – конечная (более поздняя). Опишем ниже алгоритм вычислений.
- Выбираем целевую ячейку, проверяем ее формат по способу, описанному выше.
- Описываемая функция отсутствует в Мастере функций, поэтому вводим ее в ячейку вручную, строго придерживаясь синтаксиса.
- Жмем Enter и проверяем полученный результат. Как мы видим, он аналогичен тому, который мы получили, используя простую формулу вычитания. Значит все сделано верно.
Расчет разности дат
Для корректной работы с датами сперва нужно задать ячейкам соответствующий формат. В противном случае возможны проблемы с корректным отображением дат, что сделает невозможным их дальнейшую обработку.
На самом деле Эксель способен самостоятельно определять формат ячейки после ввода в нее информации. Но этот механизм не всегда срабатывает как надо, поэтому стоит заранее самостоятельно настроить формат ячеек или проверить, правильно ли его определила программа.
- Для начала выделяем целевой диапазон ячеек, воспользовавшись зажатой левой кнопкой мыши.
- Перед нами окно настроек формата ячеек:
по умолчанию мы должны оказаться во вкладке “Число” (если это не так, переключаемся в нее);в списке “Числовые форматы” находим позицию “Дата” и кликаем на нее;в поле “Тип” выбираем нужный образец представления данных, в соответствии с которым они будут отображаться на листе;нажимаем OK. - по умолчанию мы должны оказаться во вкладке “Число” (если это не так, переключаемся в нее);
- в списке “Числовые форматы” находим позицию “Дата” и кликаем на нее;
- в поле “Тип” выбираем нужный образец представления данных, в соответствии с которым они будут отображаться на листе;
- нажимаем OK.
- Теперь все значения, вводимые в ячейки выделенной области будут восприниматься программой как данные в формате “Дата“.
Получать рабочие часы между датами собственного расписания
Чтобы вычислить часы работы между двумя датами с настраиваемым расписанием, вы можете использовать формулу, основанную на функциях ДЕНЬНЕД и ВЫБОР.
В показанном примере формула в F5:
Который возвращает 32 часа, основанный на пользовательском расписании, где 8 часов работают в Пн, Ср и Пт, а 4 часа — в Пт и Вт.
Примечание. Это формула массива, которая должна вводиться с помощью Control + Shift + Enter.
По сути, эта формула использует функцию ДЕНЬНЕД для определения дня недели (например, понедельник, вторник и т. д.) Для каждого дня между двумя указанными датами.
ДЕНЬНЕД возвращает число от 1 до 7, соответствующее конкретному дню недели. С настройками по умолчанию: 1 = воскресенье и 7 = суббота, поэтому, 2 = понедельник, 6 = пятница и так далее.
Хитрость этой формулы заключается в создании массива дат, которые вы можете использовать в функции ДЕНЬНЕД. Это делается с помощью СТРОКА с ДВССЫЛ следующим образом:
ДВССЫЛ позволяет связанным датам «» 42464: 42470 «» интерпретироваться как номера строк. Затем функция СТРОКА возвращает массив вроде этого:
Эти числа соответствуют дню недели каждой даты.
Этот массив затем передается функции ВЫБОР в качестве «номера индекса», который был сконфигурирован с 7 значениями:
Значение1 – рабочие дни в воскресенье
Значение 2 — рабочие часы в понедельник
Значение 3 — рабочие часы вторника
Значение 4 — Рабочие часы в среду
Значение 5 — рабочие часы в четверг
Значение 6 — рабочие часы в пятницу
Значение 7 — работа в субботу
Поскольку мы даем ВЫБОР более чем одно значение индекса, он возвращает более одного результата в массиве следующим образом:
Эти цифры соответствуют часам, которые выполнялись каждый день с даты 1 по дату2.
Наконец, чтобы получить итоговое значение, нам просто нужно обернуть ВЫБОР в СУММ и ввести формулу массива.
В этом примере итоговый результат составляет 32 часа.
Примечание: вы могли бы подумать, что вы могли бы использовать СУММПРОИЗВ вместо СУММ, чтобы избежать синтаксиса массива, но он не работает; Вам все равно придется использовать CSE. Я знаю, что причина заключается в использовании ДВССЫЛ с СТРОКА для построения массива значений индекса, но не знаю, почему это требует CSE.
О вычислении страхового стажа
Формулы этой статьи НЕ позволяют правильно вычислить
страховой (трудовой) стаж
с точностью до дней. Поясним сказанное на примере (также см. статью
Функция РАЗНДАТ() — Вычисление разности двух дат в днях, месяцах, годах в MS EXCEL
)
Найдем разницу дат 30.01.15. и 16.03.2015. Функция
с параметрами md и ym подсчитает, что разница составляет 1 месяц и 14 дней.
Алгоритм расчета этой функции следующий: сначала функция последовательно прибавляет месяцы к дате начала, до тех пор пока получившаяся дата меньше конечной. Т.е. к 30.01.2015 функция прибавит 1 месяц и получит 30.02.2015, но такой даты не существует, в феврале 2015г. 28 дней! Ничего страшного, функция запоминает, что нужно отнять 2 дня, чтобы получить правильную дату! Затем идет подсчет оставшихся дней в марте — их 16. Затем, функция к 16 дням прибавляет -2, и получаем 14 дней. Естественно, такой расчет не верен.
Получается, что функцию
можно использовать только для расчета
полных лет
и
месяцев
, но без дней. Рассмотренные выше формулы будут в основном возвращать правильный результат (иногда, конечно, будет возникать погрешность в 1-2 дня в меньшую сторону), но часто удобство применения этой функции перевешивает требования к точности. Такой подход безусловно не годится для расчета страхового стажа
для определения размера пособий по временной нетрудоспособности (об этом см. статью
Расчет страхового (трудового) стажа в MS EXCEL
)
.
Как в Excel посчитать дни между датами?
Так как дата является числом, значит можно проводить с ним математические вычислительные и расчетные операции. Посчитать количество дней между двумя датами Excel не составляет особых проблем. Для наглядного примера сначала выполним сложение, а потом вычитание дат. Для этого:
- На чистом листе в ячейку А1 введите текущею дату нажав CTRL+;.
- В ячейке A2 введите промежуточный период в днях, например 127.
- В ячейку A3 введите формулу:=A1+A2.

Обратите внимание, формат «Дата» автоматически присвоился для ячейки A3. Не сложно догадаться, чтобы посчитать разницу в датах в Excel нужно от новейшей даты отнять старшую дату. В ячейке B1 введите формулу:=A3-A1. Соответственно мы получаем количество дней между этими двумя датами.
Работа с датами в Excel
ШАГ 1: вставка текущей даты
Самый простой и быстрый вариант поставить в ячейку текущую дату и время — это воспользоваться функцией «» (достаточно скопировать в любую ячейку Excel, разумеется, без кавычек).
См. пример ниже. 👇

Альтернативный вариант — использовать формулу «». Работает аналогично (единственное, по умолчанию, не ставит текущее время).

ШАГ 2: сколько всего дней между двумя датами
Определить общее количество дней между двумя датами можно с помощью формулы «» (где B2 и A2 — конечная и начальная дата, соответственно).

Ко-во дней посчитано
Кстати, если у вас ячейки имеют формат дат — то можно поступить даже проще: просто вычесть из одной даты другую (как если бы это были числа).

ШАГ 3: определение кол-ва рабочих дней между датами
Более интересный вариант, когда нам нужно не просто определить кол-во дней, но и узнать сколько из них выходных, а сколько рабочих.
В этом случае может помочь формула «» (где A2 и B2 — начальная дата и конечная, соответственно).

51 рабочий день
Кстати, если вам нужно подсветить ячейки красно-зеленым цветом (чтобы сразу же видеть те строки, где, например, горят сроки — рекомендую использовать инструмент в разделе ). Пример ниже. 👇

Правила выделения ячеек
В общем-то, выглядит это все достаточно наглядно (например, те задачи, которым осталось времени на выполнение меньше 4 дней — у меня в отчете подсвечиваются красным. Удобно!)
: для обновления текущей даты и времени — нажмите сочетание кнопок Ctrl+R.


Ввод даты в ячейку Excel
Целью данного урока является пример математических операций с датами. Так же, мы убедимся, что для Excel тип данных дата является числом.
Заполните таблицу датами, так как показано на рисунке:

Разные способы ввода дат. В столбце А – способ ввода, а в столбце B – результат отображения.
Обратите внимание, что в формате ячеек по умолчанию «Общий», даты также как и число выравниваются по правой стороне, а текст по левой. Значение в ячейке B4 распознается программой как текст.
В ячейке B7 Excel сам присвоил текущий год (сейчас 2015-ый) по умолчанию. Это видно при отображении содержимого ячеек в строке формул. Обратите внимание, как изначально вводилось значение в A7.
= ЧИСТРАБДНИ (начало; конец; праздники) * часы
Чтобы получить общее количество часов работы между двумя датами, вы можете использовать формулу, основанную на функции ЧИСТРАБДНИ, где «начало» — это дата начала, «конец» — конечная дата, «праздники» — диапазон, который включает в себя даты отпуска , А «часы» — количество рабочих часов в день.
Эта формула использует функцию ЧИСТРАБДНИ, чтобы выполнить работу по определению общего количества рабочих дней между двумя датами с учетом выходных и (необязательно) праздников.
Праздники, если они предусмотрены, должны быть диапазоном, который включает действительные даты Excel.
Как только общие рабочие дни известны, их просто умножают на количество часов в рабочем дне.
Обратите внимание, что ЧИСТРАБДНИ по дизайну включает как дату начала, так и дату окончания в результате, и исключает как субботу, так и воскресенье.
Особенности использования функции РАЗНДАТ
- — : дата, от которой будет вестись расчет;
- — : дата, до которой будет вестись расчет;
- — : аргумент, указывающий на величину, в которой будет производиться расчет.
Примечание: аргументы нач_дата и кон_дата могут принимать как числовое значение, так и быть результатом какого-либо вычисления, производимого вне ячеек (например, функции ДАТА(), функции СЕГОДНЯ()).
аргумент единица может принимать одно из шести значений:
- — «Y»: в результате подсчетов будет выведено количество полных лет между начальными аргументами;
- — “M”: в результате подсчетов будет выведено количество полных месяцев между начальными аргументами;
- — «D»: в результате подсчетов будет выведено количество полных дней между начальными аргументами;
- — «MD»: в результате подсчетов будет выведено количество дней между датами, не учитывая месяца, прошедшие между датами. Например, при вычислении разницы между 1 сентября 2018 года и 21 ноября 2018 года (что составляет 2 месяца и 20 дней) со значением “MD” будет возвращено значение 20, т.к. прошедшие 2 полных месяца не будут учтены;
- — «YM»: в результате подсчетов будет выведено количество месяцев между датами, не учитывая года, прошедшие между датами. Например, при вычислении разницы между 1 сентября 2010 года и 1 ноября 2018 года (что составляет 8 лет и 2 месяца) со значением “YM” будет возвращено значение 2, т.к. прошедшие 8 полных лет не будут учтены;
- — «YD «: в результате подсчетов будет выведено количество суток между датами, не учитывая года, прошедшие между датами. Например, при вычислении разницы между 1 сентября 2010 года и 2 сентября 2018 года (что составляет 8 лет и 1 день) со значением “YD” будет возвращено значение 1, т.к. прошедшие 8 полных лет не будут учтены.
Расчет кол-ва рабочих дней
Итак, рабочие дни можно вычислить двумя способами:
- Функция Excel ЧИСТРАБДНИ — ее следует использовать, если выходные дни — суббота и воскресенье.
- Функция Excel ЧИСТРАБДНИ.МЕЖД — используйте ее, когда выходные дни отличаются от субботы и воскресенья.
Сначала быстро рассмотрим синтаксис и аргументы фунции ЧИСТРАБДНИ.
Функция Excel ЧИСТРАБДНИ
- нач_дата — это дата начала отсчета.
- end_date — это конечная дата отсчета.
Посмотрим на стандартный пример, когда нужно посчитать кол-во рабочих дней.
Мы будем использовать эту формулу:
Такая вариация этой функции даст то что вам нужно, если вам нужно посчитать рабочие дни без субботы и воскресенья.
Но бывают и другие ситуации, к примеру, в разных странах выходные на неделе строятся по-разному, это может быть пятница и так далее.
Именно для таких ситуаций и появилась функция ЧИСТРАБДНИ.МЕЖД.
Посмотрим что из себя представляет эта функция.
Функция Excel ЧИСТРАБДНИ.МЕЖД
- нач_дата — значение даты, представляющее собой начальную дату.
- конеч_дата — значение даты, представляющее дату окончания.
А сейчас, попробуем посчитать кол-во рабочих дней, если выходными будут пятница и суббота.
Допустим, таблица такая же как и в прошлом примере:
Будем использовать формулу:
3 аргумент в функции сообщает Excel, что пятница и суббота выходные.
Также, мы можем использовать ЧИСТРАБДНИ.МЕЖД для расчета выходных между двумя датами.
Она конечно вычисляет кол-во рабочих дней, но мы можем адаптировать это «под себя».
Допустим, таблица все та же:
Формула, которая нам подойдет:
Получить дни, месяцы и годы между датами
= РАЗНДАТ (начало; конец; «г»)&»годы»; & РАЗНДАТ(начало; конец; «гм») & «месяцы»; & РАЗНДАТ(начало; конец; «мд») & «дни»
Чтобы рассчитать и отобразить время между датами в днях, месяцах и годах, вы можете использовать формулу, основанную на функции РАЗНДАТ.

= РАЗНДАТ(B5; C5; «г») & «годы»; & РАЗНДАТ(B5; C5; «гм») & «месяцы»; & РАЗНДАТ(B5; C5; «мд») & «дни»
Где даты начала указаны в столбце B, а даты окончания — в столбце C.
Функция РАЗНДАТ предназначена для вычисления разницы между датами в годах, месяцах и днях. Доступны несколько вариантов (например, время в месяцах, время в месяцах без учета дней и лет и т. д.), И они устанавливаются аргументом «единица» в функции.
В показанном примере мы вычисляем отдельно годы, месяцы и дни, затем «склеиваем» результаты вместе с конкатенацией. Чтобы получить целые годы, мы используем:
РАЗНДАТ(B5; C5; «г») и «годы»
Чтобы получить целые месяцы, мы используем:
И мы вычисляем дни с:
Остальная часть формулы — это просто необходимый текст, объединенный с оператором конкатенации (&).
Чтобы предотвратить вывод дней, месяцев или лет с нулевыми значениями, вы можете обернуть каждую функцию РАЗНДАТ внутри ЕСЛИ, как показано здесь (строки, добавленные для удобочитаемости):
=ЕСЛИ(РАЗНДАТ(B5; C5; «г»); РАЗНДАТ (B5; C5; «г») & «годы»; «») ЕСЛИ(РАЗНДАТ(B5; C5; «гм»); РАЗНДАТ(B5; C5; «гм») & «месяцы»; «») ЕСЛИ(РАЗНДАТ(B5; C5; «мд»); РАЗНДАТ(B5; C5; «мд») & «дни»; «»)
Для предотвращения появления дополнительных запятых в конечном результате запятые заменяются пробелами. Использование исходной формулы РАЗНДАТ как «логического теста» внутри ЕСЛИ работает, потому что ЕСЛИ обрабатывает любой ненулевой результат как истинный.
Разница в полных годах («y»)
Формула
вернет количество полных лет между двумя датами.
Пример1:
начальная_дата
01.02.2007,
конечная_дата
01.03.2009
Результат:
2 (года)
Пример2:
начальная_дата
01.04.2007,
конечная_дата
01.03.2009
Результат:
1 (год)
Подробнее читайте в статье
Полный возраст или стаж
.
Формула может быть заменена альтернативным выражением:
=ЕСЛИ(ДАТА(ГОД(B2);МЕСЯЦ(A2);ДЕНЬ(A2))<=B2; ГОД(B2)-ГОД(A2);ГОД(B2)-ГОД(A2)-1)
Разница в днях без учета месяцев и лет («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 дня)!
Данная формула лишь эквивалетное (в большинстве случаев) выражение для
с параметром md. О корректности этой формуле читайте в разделе «Еще раз о кривизне РАЗНДАТ()» ниже.
Подсчитывать праздники между двумя датами
Для подсчета праздничных дней, которые происходят между двумя датами, вы можете использовать функцию СУММПРОИЗВ.
В показанном примере формула в F7:
Эта формула использует два выражения в одном массиве внутри функции СУММПРОИЗВ.
Первое выражение проверяет каждую дату отпуска, чтобы увидеть, больше или равна дате начала в F5:
Это возвращает массив значений ИСТИНА/ЛОЖЬ, например:
Второе выражение проверяет каждую дату отпуска, чтобы увидеть, меньше или равна конечной дате в F6:
(B5: B13 <= F6)
Который возвращает массив значений ИСТИНА/ЛОЖЬ следующим образом:
Умножение этих двух массивов автоматически присваивает значения ИСТИНА/ЛОЖЬ единицам и нулям, что приводит к массивам, которые выглядят так:
После умножения у нас есть только один массив:
Для подсчета праздничных дней, которые происходят только в рабочие дни (понедельник-пятница), вы можете расширить формулу следующим образом:
Где диап — диапазон, содержащий даты отпуска.
Использование формулы вычитания
Начнем, пожалуй, с самого простого способа – вычитания двух дат, представленного в виде обычной формулы.
- Вносим две даты, между которыми будем определять разницу в днях, в две разные ячейки отформатированного ранее диапазона.
- В нашем случае установлено значение “Дата“. Для его изменения вновь вызываем окно формата ячеек и по описанному выше алгоритму устанавливаем числовой формат “Общий“. Для сохранения изменений жмем ОК.
- Теперь можно переходить непосредственно к вычислениям:
в итоговую ячейку вводим знак “=“;кликаем по ячейке с конечной датой (более поздней);вводим с клавиатуры символ “–” (знак минус);кликаем по ячейке с начальной датой. - в итоговую ячейку вводим знак “=“;
- кликаем по ячейке с конечной датой (более поздней);
- вводим с клавиатуры символ “–” (знак минус);
- кликаем по ячейке с начальной датой.
- Для получения результата жмем клавишу Enter. В итоге получаем целое число – количество дней между двумя датами.
Расчет кол-ва неполных рабочих дней между двумя датами
Также, к примеру, можно использовать эту же функцию для расчета неполных рабочих дней.
Допустим, у нас есть похожая таблица с данными:
Формула, для нашего случая, будет такой:
Для обозначения выходных дней, мы использовали «1010111».
- 0 — рабочий день
- 1 — неполный рабочий день
Первая цифра из этого числа — понедельник, последняя — воскресенье
Грубо говоря, «0000011» значит, что с понедельника по пятницу — рабочие дни, а суббота и воскресенье — нерабочие (выходные).
По той же логике, «1010111» означает, что только вторник и четверг являются рабочими, а остальные 5 дней — нерабочими.
Если вам нужно исключить какие-то дни из расчетов, можете исключать их таким образом.
Создание диапазона дат с двух дат
= ТЕКСТ(дата1; «формат») & «-» & ТЕКСТ (дата2; «формат»)
Чтобы отобразить диапазон дат в одной ячейке на основе дат в разных ячейках, вы можете использовать формулу, основанную на функции ТЕКСТ.
В показанном примере формула в ячейке E5:
= ТЕКСТ (B5; «ммм д») & «-» & ТЕКСТ(C5; «ммм д»)
Функция ТЕКСТ принимает числовые значения и преобразует их в текстовые значения, используя заданный вами формат. В этом примере мы используем формат «ммм д» для обеих функций TEКСT в E5. Результаты объединяются дефисом, используя простую конкатенацию.
Примечание. Другие примеры в столбце E используют разные текстовые форматы.
Если дата окончания отсутствует, формула не будет работать правильно, потому что дефис будет добавлен к дате начала (например, «1 марта»).
Чтобы обработать этот случай, вы можете обернуть конкатенацию и вторую функцию ТЕКСТ внутри ЕСЛИ следующим образом:
Это создает полный диапазон дат, когда обе даты присутствуют, но выводит только дату начала, когда дата окончания отсутствует.
Для обработки случая, когда обе даты отсутствуют, вы можете вложить еще один ЕСЛИ следующим образом:
Эта формула просто возвращает пустую строку («»), когда дата1 недоступна.
Примеры использования функции РАЗНДАТ
Требуется вычислить, зная дату рождения работника, сколько полных лет, месяцев и дней ему исполнилось на момент сегодняшней даты.

Используя в качестве аргументов саму дату рождения и функцию СЕГОДНЯ(), а также значения «Y», «M» и «D» для единицы, получим следующий набор формул:

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

С помощью функции РАЗНДАТ определим, сколько дней прошло с момента заключения трудового договора. В новом столбце для ячейки С2 используем формулу: =РАЗНДАТ(B2;СЕГОДНЯ();»d») и протянем ее на весь столбец ниже.

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

Сначала мы определяем количество дней во году по дате (365 или 366) по формуле ЕСЛИ(ОСТАТ(ГОД(B2);4);365;366), а после вычитаем, чтобы узнать сколько осталось -C2.
Для удобства можно добавить еще одну колонку, в которой с помощью условий указать замечание для продления договора, если осталось меньше 10 дней до его окончания. Для ячейки E2 используем формулу:

В данной формуле используется функция ЕСЛИ с несколькими условиями. Если до конца срока больше 10-ти суток тогда формула возвращает значение «Действует», а если меньше 10-то тогда одно из условий:
- Если меньше 10-ти суток, но больше чем 0 – значение «Заканчивается».
- Если меньше чем 0, тогда «Просрочен».
Пример расчета количества рабочих дней без выходных
Для расчета количества трудовых дней между датами начальной и конечной за исключением выходных можно воспользоваться функцией ЧИСТРАБДНИ:

Применяемая формула весьма проста. Функция ЧИСТРАБДНИ имеет два обязательных для заполнения аргумента:
Если начальная дата записана в ячейке A2, а конечная в B2, тогда функция возвращает количество только рабочих дней (без суббот и воскресенья) с учетом високосных годов, в которых всего 366 дня.
Главным недостатком данной формулы является тот факт, что она по умолчанию за выходные считает только субботы и воскресенья. Что делать если у вашей фирмы выходными считаются только воскресенья? Или же если вы работаете в сфере торговли у вас могут быть выходные другие дни, например, пятницы и субботы?
Для вычислений данного типа Excel предлагает функцию ЧИСТРАБДНИ.МЕЖД. Данная функция обладает дополнительным важным аргументом – «Выходные». Здесь следует указать один из кодов, который поддерживает данная функция (от 1 и до 15). Данный код определяет которые дни недели должны быть восприняты как выходные и не учитываться при вычислении формулы.
В процессе введения функции вручную в ячейку или в строку формул в момент заполнения третьего аргумента появится подсказка значения кодов 1-15. Как показано ниже на рисунке:

Просто выберите соответствующий вашим требованиям код и нажмите Enter. Теперь вы сами решаете какие дни недели считать выходными, а какие нет.
Синтаксис функции
РАЗНДАТ(начальная_дата; конечная_дата; способ_измерения)
Аргумент
начальная_дата
должна быть раньше аргумента
конечная_дата
.
Аргумент
способ_измерения
определяет, как и в каких единицах будет измеряться интервал между начальной и конечной датами. Этот аргумент может принимать следующие значения:
Ниже приведено подробное описание всех 6 значений аргумента
способ_измерения
, а также альтернативных формул (функцию
можно заменить другими формулами (правда достаточно громоздкими). Это сделано в
).
В файле примера значение аргумента
начальная_дата
помещена в ячейке
А2
, а значение аргумента
конечная_дата
– в ячейке
В2
.
Рассчитать года между датами
= ДОЛЯГОДА (нач_дата; кон_дата)
Если вы хотите вычислить количество лет между двумя датами, вы можете использовать функцию ДОЛЯГОДА, которая будет возвращать десятичное число, представляющее долю года между двумя датами. Вот несколько примеров результатов, которые ДОЛЯГОДА вычисляет:
дата начала (1/1/2015) дата окончания ( 1/1/2016) результат ДОЛЯГОДА(1)
дата начала (6/1/2000) дата окончания (6/25/1999) результат ДОЛЯГОДА(0.9333)
Если у вас есть десятичное значение, вы можете округлить число, если хотите. Например, вы можете округлить до ближайшего целого числа:
= ОКРУГЛ(ДОЛЯГОДА (A1; B1); 0)
Вы также можете сохранить только целую часть результата без дробного значения, так что вы будете считать только целые годы. В этом случае вы можете просто обернуть ДОЛЯГОДА в функцию ЦЕЛОЕ:
= ЦЕЛОЕ(ДОЛЯГОДА(A1; B1))
Стандартный расчет количества дней
Итак, в Excel есть две функции для вычисления кол-ва дней.
С помощью функции ДНИ
Чтобы получить результат от функции нам понадобится дата начала и дата конца.
Итак, вы указываете эти две даты в аргументах функции и получаете количество дней между ними.
Хороший пример вы можете видеть на картинке ниже:
Используем эту формулу:
Также вы можете вручную прописать даты в функции (без указания ячеек), но тогда вам нужно заключить их в кавычки.
С помощью функции РАЗНДАТ
Эта функция аналогична, её отличие в том, что можно указать больше параметров. То есть больше «подстроить» под ситуацию.
Также можно вычислить кол-во месяцев или лет между датами.
Допустим, мы имеем то что указано на картинке ниже:
Эта функция использует три наших аргумента:
- Дата начала — B1
- Дата окончания — B2
- «D» — текстовая строка
Важный момент: этой функции не будет в подсказке при написании названия функции, т.е. если вы будете писать РАЗНДАТ, Excel будет вести себя так, как будто он не знает что это за функция, но это не так.
Функция РАЗНДАТ больше подходит для ситуаций, когда нужно вычислить кол-во лет или месяцев между датами, в других ситуациях удобнее применять ДНИ (функцию).
Вот формула, которая даст результат по месяцам, которые будут между датами:
А эта формула, тоже самое что и прошлая, только вычисляет кол-во лет:
Вычисление возраста по дате рождения в Excel
Теперь мы научимся вычислять возраст по дате рождения:
- На новый лист в ячейки A1:A3 введите даты: 18.04.1985; 17.08.1977; 08.12.1992
- В ячейки B1:B3 проставьте текущею дату.
- Теперь нужно воспользоваться функцией по преобразованию количества дней в количество лет. Для этого вручную введите в диапазон C1:C3 следующее значение: =РАЗНДАТ(A1;B1;»y»).

Таким образом, применение функции позволило нам точно вычислить возраст по дате рождения в Excel.
Чтобы перевести дни в года не достаточно формулы: =(B1-A1)/365. Более того даже если мы знаем что 1 сутки = 0,0027397260273973 года, то формула:=(B1-A1)*0,0027397260273973 так же не даст точного результата.
Дни в года наиболее точно преобразует функция:=РАЗНДАТ(). Английская версия =DATEDIF(). Вы не найдете ее в списке мастера функций (SHIFT+F3). Но если просто введете ее в строку формул, то она сработает.
Функция РАЗНДАТ поддерживает несколько параметров:
Проиллюстрируем пример использования нескольких параметров:

Чтобы функция:=РАЗНДАТ() работала без ошибок, следите за тем, чтобы начальная дата была старше конечной даты.
Список праздников между двумя датами
Для отображения праздников, которые происходят между двумя датами, вы можете использовать формулу, основанную на функциях ОБЪЕДИНИТЬ и ЕСЛИ.
В показанном примере формула в F8:
Это формула массива и должна вводиться control + shift + enter.
На высоком уровне эта формула использует вложенную функцию ЕСЛИ для возвращения массива праздников между двумя датами. Затем этот массив обрабатывается функцией ОБЪЕДИНИТЬ, которая преобразует массив в текст, используя запятую в качестве разделителя.
Работая изнутри, мы генерируем массив совпадений праздников, используя вложенный ЕСЛИ:
Если даты в B4: B12 больше или равны начальной дате в F5, и если даты в B4: B12 меньше или равны конечной дате в F6, тогда ЕСЛИ возвращает массив праздничных дней. В показанном примере список выглядит так:
Этот массив затем доставляется в функцию ОБЪЕДИНИТЬ в качестве аргумента текст1, где разделитель имеет значение «,», а игнорировать_пустые — ИСТИНА. Функция ОБЪЕДИНИТЬ обрабатывает элементы в массиве и возвращает строку, где каждый непустой элемент разделяется запятой и пробелом.
Заключение
С помощью описанных выше методов можно достаточно легко посчитать количество дней между двумя датами, как с наличием дополнительных критериев, так и без них. Формула вычитания и функция РАЗНДАТ прекрасно подойдут для простого подсчета дней, а функция ЧИСТРАБДНИ поможет с расчетом количества именно рабочих дней между датами. Окончательный выбор зависит от поставленной перед пользователем задачи.
