Разндат в excel формула
Функция РАЗНДАТ() — Вычисление разности двух дат в днях, месяцах, годах в MS EXCEL
Если Вам требуется рассчитать стаж (страховой) в годах, месяцах, днях, то, пожалуйста, воспользуйтесь расчетами выполненными в статье Расчет страхового (трудового) стажа в MS EXCEL.
Функции РАЗНДАТ( ) нет в справке EXCEL2007 и в Мастере функций (SHIFT+F3), но она работает, хотя и не без огрех.
Синтаксис функции:
РАЗНДАТ(начальная_дата; конечная_дата; способ_измерения)
Аргумент начальная_дата должна быть раньше аргумента конечная_дата.
Аргумент способ_измерения определяет, как и в каких единицах будет измеряться интервал между начальной и конечной датами. Этот аргумент может принимать следующие значения:
Значение
Описание
разница в полных месяцах
разница в полных годах
разница в полных месяцах без учета лет
разница в днях без учета месяцев и лет
ВНИМАНИЕ! Функция для некоторых версий 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) ДЕНЬ(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! Эта ошибка проявляется, когда в предыдущем месяце относительно конечной даты, дней меньше, чем дней начальной даты. Как выйти из этой ситуации?
Модифицируем формулу для расчета дней разницы без учета месяцев и лет:
Функция DATEDIF (РАЗНДАТ) в Excel. Как использовать?
Функция DATEDIF (РАЗНДАТ) в Excel используется для подсчета количества лет, месяцев или дней между двумя датами. Хороший пример – подсчет возраста.
Что возвращает функция
Число, обозначающее количество лет/месяцев/дней между двумя датами. Какие значения будут отображаться (год, месяц или дни) зависит от того, что будет указано вами в атрибутах функции.
=DATEDIF(start_date,end_date,unit) – английская версия
=РАЗНДАТ(нач_дата ; кон_дата ; единица) – русская версия
Аргументы функции
- start_date (нач_дата): дата, с которой начинается вычисление разницы во времени между двумя датами. Дата может быть указана как текст в кавычках, числовое значение, или результат какого-либо вычисления (например в функции ДАТА());
- end_date (кон_дата): дата, на которой вычисление разницы во времени между двумя датами будет окончено. Она, также, может быть указана как текст в кавычках, числовое значение, или результат какого-либо вычисления;
- unit (единица): Этот аргумент определяет в каком измерении будет отображена разница между двумя датами (год, месяц, день). Существует 6 различных типов отражения данных:
- “Y” – возвращает данные в количестве лет между двумя датами;
- “M” – возвращает данные в количестве месяцев между двумя датами;
- “D” – возвращает данные в количестве дней между двумя данными;
- “MD” – возвращает данные в количестве дней между двумя датами, но не учитывает целые годы, месяца, которые уже прошли при расчете данных. Например, если вы рассчитываете количество дней между двумя датами: 1 Января 2017 и 3 Марта 2017, функция выдаст значение “2”, так как не будет учитывать два прошедших полных месяцев (Январь, Февраль);
- “YM” – возвращает данные в количестве месяцев между двумя датами, но не учитывает целые годы, которые уже прошли между двумя расчетными данными;
- “YD” – возвращает данные в количестве дней между двумя датами, но не учитывает целые годы, которые уже прошли между двумя расчетными датами.
Дополнительная информация
- При вводе функции в ячейку, она не отображается в быстром меню выбора функций. Тем не менее функция работает во всех версиях Excel. Важно знать аргументы функции и как ими пользоваться;
- Данные даты в функции могут быть введены как:
– дата указанная в виде текста в кавычках;
– число;
– как результат вычисления, формулы, функции.
Примеры использования функции РАЗНДАТ в Excel
Пример №1. Подсчет количества лет между двумя датами
На примере выше, формула возвращает количество лет между двумя датами. Например, функция вернет значение “27” если вы захотите посчитать количество полных лет между двумя датами 19 июня 1989 года и 26 марта 2017 года. Система подсчитывает количество полных лет и игнорирует количество месяцев и дней между датами.
Пример №2. Подсчет количества месяцев между двумя датами
На примере выше, функция DATEDIF (РАЗНДАТ) в Excel возвращает количество полных месяцев между двумя датами – 19 июня 1989 года и 26 марта 2017 года.
Функция возвращает значение “333”, что является количеством полных месяцев между датами указанными выше.
Пример №3. Подсчет количества дней между двумя датами
На примере выше, функция DATEDIF (РАЗНДАТ) в Excel возвращает количество дней между двумя датами. Например, функция возвращает значение “10142” дня между двумя датами – 19 июня 1989 года и 26 марта 2017 года.
Если вы хотите посчитать количество дней между двумя датами, исключая количество лет, которые уже завершены, вам нужно использовать аргумент “YD” в качестве третьего (пример на рисунке ниже):
В приведенном выше примере он возвращает значение “280”, то есть число дней между днями, исключая 27 полных лет.
Если вы хотите посчитать количество дней между двумя датами, исключая количество полных лет и месяцев, используйте атрибут “MD” в качестве третьего аргумента (как показано на рис. ниже):
На примере выше функция возвращает значение “7” означающие количество дней между двумя днями “19” и “26” число, исключая значения лет и месяцев.
РАЗНДАТ (функция РАЗНДАТ)
Вычисляет количество дней, месяцев или лет между двумя датами.
Предупреждение: Функция РАЗНДАТ предлагается в Excel для поддержки старых книг Lotus 1-2-3. В некоторых ситуациях она может выдавать неправильные результаты. Дополнительные сведения см. в разделе «Известные проблемы» в этой статье.
Дата, представляющая собой первую или начальную дату заданного периода. Даты можно вводить в виде текстовых строк в кавычках (например, «30.1.2001»), в виде порядковых номеров (например, 36921 представляет 30 января 2001 г., если используется система дат 1900) или как результаты вычисления других формул или функций (например ДАТАЗНАЧ(«30.1.2001»)).
Дата окончания периода.
Тип возвращаемых данных, где:
Количество полных лет в периоде.
Количество полных месяцев в периоде.
Количество дней в периоде.
Разница в днях между начальной и конечной датой. Месяцы и годы дат не учитываются.
Важно: Не рекомендуется использовать аргумент «MD», так как с ним связаны определенные ограничения. См. раздел «Известные проблемы» ниже.
Разница в месяцах между начальной и конечной датой. Дни и годы дат не учитываются.
Разница в днях между начальной и конечной датой. Годы дат не учитываются.
Даты хранятся в виде последовательных чисел, что позволяет использовать их в вычислениях. По умолчанию дате 1 января 1900 года соответствует номер 1, а 1 января 2008 года — 39448, так как интервал между этими датами составляет 39 447 дней.
Функция РАЗНДАТ полезна в формулах расчета возраста.
Tart_date sбольше, чемnd_datee, результат будет #NUM!.
Два полных года в периоде (2).
440 дней между 1 июня 2001 г. и 15 августа 2002 г. (440)
75 дней между 1 июня и 15 августа без учета годов дат (75)
Известные проблемы
При использовании аргумента «MD» результатом может быть отрицательное число, нуль или неверное значение. Если вы пытаетесь вычислить оставшиеся дни после последнего полного месяца, вот как можно это сделать:
Эта формула вычитает первый день окончания месяца (01.05.2016) из исходной даты окончания в ячейке E17 (06.05.2016). Вот как это делается: сначала функция ДАТА создает дату 01.05.2016. Она создается с помощью года в ячейке E17 и месяца в ячейке E17. 1 обозначает первый день месяца. Результатом функции ДАТА будет 01.05.2016. Затем мы вычитаем эту дату из исходной даты окончания в ячейке E17 (06.05.2016), в результате чего получается 5 дней.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Пример функции РАЗНДАТ для расчета времени между датами в Excel
Функция РАЗНДАТ позволяет выяснить, сколько полных дней, месяцев или лет прошло между двумя указанными датами. Таким образом можно легко посчитать в Excel: возраст от даты рождения, трудовой стаж, сроки беременности и др. Примеры расчетов точных сроков, возрастов и продолжительности до окончания периодов времени с помощью функции РАЗНДАТ. Как правильно считать разницу между двумя датами при 365 и 366 днях в году?
Примеры использования функции РАЗНДАТ
Пример 1. Требуется вычислить, зная дату рождения работника, сколько полных лет, месяцев и дней ему исполнилось на момент сегодняшней даты.
Используя в качестве аргументов саму дату рождения и функцию СЕГОДНЯ(), а также значения «Y», «M» и «D» для единицы, получим следующий набор формул:
Таким образом мы получили точный возраст в годах, месяцах и днях от даты рождения.
Как точно посчитать сколько прошло времени: лет, месяцев и дней?
Пример 2. В документе записаны даты рождения сотрудников. Требуется выяснить, сколько лет, месяцев и дней исполнилось каждому из них на момент сегодняшнего дня.
Используя уже знакомую формулу =РАЗНДАТ(B2;СЕГОДНЯ();»Y») для ячейки С2 получим количество полных лет возраста каждого из работников. Протянем эту формулу на весь столбец ниже.
Модифицировав формулу, использованную выше, заменяем значение единицы с «Y» на «YM». Итоговый вид формулы: =РАЗНДАТ(B2;СЕГОДНЯ();»YM»). Таким образом, мы получим на выходе количество полных месяцев возраста, не учитывая прошедшие полные года. Протянем формулу на весь столбец ниже.
В конце нам понадобятся и дни, не вошедшие в месяц. Снова заменяем значение единицы с «YM» на «YD» и получим формулу следующего вида, в которой на выходе будет число дней: =РАЗНДАТ(B2;СЕГОДНЯ();»YD»).
Такое решение можно элегантно улучшить, если использовать функцию СПЕЦПИТЬ() и вызвать окошко аргументов, приведя функцию в следующий вид: =СЦЕПИТЬ(C2;» лет «;D2;» месяцев «;E2;» дня(-ей)»)
Как посчитать сроки окончания действия договора в Excel
Пример 3. В документе записаны даты заключения договоров сотрудников компании. По умолчанию договор заключается на 1 год. Требуется выяснить, сколько дней осталось до момента окончания трудового договора у каждого из сотрудников, чтобы подготовить новые экземпляры для продления договоров.
С помощью функции РАЗНДАТ определим, сколько дней прошло с момента заключения трудового договора. В новом столбце для ячейки С2 используем формулу: =РАЗНДАТ(B2;СЕГОДНЯ();»d») и протянем ее на весь столбец ниже.
Подсчитаем количество оставшихся дней до окончания трудового договора каждого из сотрудников. Для этого в новом столбце вычитаем от количества дней в году значения из столбца С, используя формулу:
Сначала мы определяем количество дней во году по дате (365 или 366) по формуле ЕСЛИ(ОСТАТ(ГОД(B2);4);365;366), а после вычитаем, чтобы узнать сколько осталось -C2.
Для удобства можно добавить еще одну колонку, в которой с помощью условий указать замечание для продления договора, если осталось меньше 10 дней до его окончания. Для ячейки E2 используем формулу:
10;»Действует»;ЕСЛИ(D2
В данной формуле используется функция ЕСЛИ с несколькими условиями. Если до конца срока больше 10-ти суток тогда формула возвращает значение «Действует», а если меньше 10-то тогда одно из условий:
- Если меньше 10-ти суток, но больше чем 0 – значение «Заканчивается».
- Если меньше чем 0, тогда «Просрочен».
Особенности использования функции РАЗНДАТ
- — нач_дата : дата, от которой будет вестись расчет;
- — кон_дата : дата, до которой будет вестись расчет;
- — единица : аргумент, указывающий на величину, в которой будет производиться расчет.
Примечание: аргументы нач_дата и кон_дата могут принимать как числовое значение, так и быть результатом какого-либо вычисления, производимого вне ячеек (например, функции ДАТА(), функции СЕГОДНЯ()).
Примечание: аргумент единица может принимать одно из шести значений:
- — «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 полных лет не будут учтены.
Вычисление возраста или стажа функцией РАЗНДАТ (DATEDIF)
Для вычислений длительностей интервалов дат в Excel есть функция РАЗНДАТ, в английской версии — DATEDIF.
Нюанс в том, что Вы не найдете эту функцию в списке Мастера функций, нажав кнопку fx — она является недокументированной возможностью Excel. Точнее говоря, найти описание этой функции и ее аргументов можно только в полной версии англоязычной справки, поскольку на самом деле она оставлена для совместимости со старыми версиями Excel и Lotus 1-2-3. Однако, несмотря на то, что эту функцию не получится вставить стандартным способом через окно Вставка — Функция (Insert — Function) , ее можно вручную вписать в ячейку с клавиатуры — и она сработает!
Синтаксис функции следующий:
=РАЗНДАТ( Начальная_дата ; Конечная_дата ; Способ_измерения )
С первыми двумя аргументами все более-менее понятно — это ячейки со стартовой и конечной датами. А самый интересный аргумент, конечно, последний — он определяет, каким именно образом и в каких единицах будет измеряться интервал между начальной и конечной датами. Этот параметр может принимать следующие значения:
Т.е. при желании подсчитать и вывести, например, ваш стаж в виде «3 г. 4 мес. 12 дн.», необходимо ввести в ячейку следующую формулу:
где А1 — ячейка с датой поступления на работу, А2 — с датой увольнения.
или в английской версии Excel:
Ссылки по теме
Если подсчитанное количество дней стажа в А1, то:
A2=ЦЕЛОЕ(A1/365) — количество лет
A3=ЦЕЛОЕ(ОСТАТ(A1;365)/30,5) — количество месяцев
A4=A1-A2*365-A3*30,5 — количество дней
Николай, спасибо за подсказку. В моём случае, дополнительно к приведённой формуле, пришлось применить поправочную константу » -1 «. Формула приняла вид =(МЕСЯЦ(A2)-МЕСЯЦ(A1))-1 .
Тем кто решит этим воспользоваться:
данное вычисление, для моей задачи, корректно действет в пределах календарного года. Если даты из разных календарных лет, то результат, для поставленной задачи, будет неверен. Наводка получена, попробую универсальную конструкцию из формул организовать.
Ещё раз спасибо.
Нужна помощь специалистов.
Имею время начала операции и время окончания операции в следующем формате.
Нужно рассчитать время выполнения операции в часах.
Подскажите как посчитать продолжительность отпуска ( с вычетом заданных праздничных дней) но не в рабочих днях, а в календарных.
Я пробовала задать в функции WORKDAY.INTL условие — что нет выходных, но это не работает
У нас подсчет отпусков ведется в календарных днях (минус праздники , выпадающие на период отпуска)
Николай, здравствуйте!
Подскажите, существует ли вариант подсчета количества календарных дней за вычетом праздничного дня (при его наличии в заданном диапазоне), в условии заданы начальная и конечная дата. Мне это необходимо для подсчета дней отпуска.
Заранее спасибо за ответ,
Трофимова Татьяна
Прошу совета
Использую формулу вычисления возраста =РАЗНДАТ(A1; СЕГОДНЯ(); «y»)
A1 в формате дата.
Если А1 не заполнено (то есть равно 0) то возраст показывается как 116
как этого избежать?
помогите, пожалуйста, никак не могу сообразить. надо просчитать количество лет (нужно получить не целое число) просрочки платежей с учетом того, что просрочка составляет больше одного года и часть периода просрочки может попадать на високосный год, а может не попадать.
например, срок оплаты 20.10.2015, нужен срок просрочки задолженности на 10.02.2017 в нецелых годах с учетом того, что в 2015 году 365 дней, в 2016 — 366, и в 2017 — 365. на данный момент я высчитываю сначала кол-во дней с 20.10.15 по 01.01.16 плюс с 01.01.17 по 10.02.17 и делю на 365, потом прибавляю один год. либо если надо посчитать просрочку например, на 20.10.16 то сначала считаю просрочку 2015 года и делю на 365, потом отдельно за 2016 и делю их на 366 и итоги суммирую. скорее всего это абсолютно и совершенно кустарный метод на коленке, но другого не знаю, а потом взываю к вам за помощью и советом:)
Добрый день!
В первой из двух ячеек с датами для расчета, через Alt+Enter перечислено несколько дат. Есть ли возможность сконструировать формулу так, чтобы она могла отсортировывать и обращаться к первой из имеющихся в первой ячейке дат или такая возможность отсутствует и содержимое этой ячейки программой воспринимается как свалка? Заранее спасибо!
Здравствуйте, уважаемые Знатоки!
Я прошу помощи в следующем.
Имеются два столбика. Первый столбик — это дата начала периода. Второй столбик — дата окончания периода. Каждая строка представляет ПЕРИОД, протяженностью несколиких лет (больше одного).
Нужно вычислить количество месяцев для каждого «составляющего» года. То есть итог будет выглядеть результатом для каждого года, который вкладывается в период каждой строки.
Например для периода 02.01.2018 (столбик 1) — 28.06.22 (столбик 2) результат будет выражен следующим:
Столбик 3 (2018 год) — 12 месяцев;
Столбик 4 (2019 год) — 12 месяцев;
Столбик 5 (2020 год) — 12 месяцев;
Столбик 6 (2021 год) -12 месяцев;
Столбик 7 (2022 год) -6 месяцев.
Всего месяцев — 54
Необходимость связана с планированием и расчетами долгосрочных проектов (работ), когда необходимо автоматически (при изменении дат начала или окончания при планировании и расчетах) получать количество месяцев производимых работ в каждом годе, входящим в состав поолного ПЕРИОДА. Фактически формула кажется должна иметь универсальную архитектуру и количество лет будет определять эту формулу с интерпретацией для каждого входящего в полный период года.
В принципе, с учетом срочной необходимости, меня устроит ЦЕЛОЕ число месяцев, поскольку, видимо, сложно определить точное число месяев (не целое).
Я попробовал составить формулу, но у меня получается «дремучий лес» логических условий, до конца дойти не могу.