Різниця між двома датами: Функція Datedif
Вступ до функції DATEDIF
Функція DATEDIF обчислює різницю між двома датами в різних інтервалах, наприклад, кількість років, місяців або днів між датами. Ця функція доступна у всіх версіях Excel, принаймні з версії 5/95, але задокументована у файлі довідки тільки для Excel 2000. З якоїсь причини Microsoft вирішила не документувати цю функцію в інших версіях. DATEDIF розглядається як п'яний двоюрідний брат сімейства Формули. Excel знає, що він живе щасливим і корисним життям, але не буде говорити про це у ввічливій бесіді. Не плутайте функцію аркуша DATEDIF з функцією DateDiff VBA.
Синтаксис для DATEDIF такий:
= DATEDIF (дата1, дата2, інтервал)
Де:
Дата1 - перша дата,
Дата2 - друга дата,
Інтервал - це тип інтервалу для повернення.
Якщо Date1 пізніше Date2, DATEDIF повертає #NUM! помилка. Якщо Date1 або Date2 не є допустимою датою, DATEDIF поверне помилку #VALUE.
Значення інтервалу має бути одним з
Інтервал Значення Опис
m Місяці Повні календарні місяці між датами.
d Дні Кількість днів між датами.
y Роки Повний календарний рік між датами.
ym Місяці без урахування років Повні календарні місяці між датами, як якщо б вони були того ж року.
yd Дні без урахування років Повний календарні дні між датами, як якщо б вони були того ж року.
md Days, що виключають роки та місяці Повні календарні дні між датами, як якщо б вони були того ж місяця та того ж року.
Якщо інтервал не є одним із перелічених вище елементів, DATEDIF поверне помилку #NUM.
Якщо ви включите рядок інтервалу безпосередньо в формулу, ви повинні вкласти його в подвійні лапки:
= DATEDIF (Date1, Date2, "m")
Якщо ви маєте інтервал у іншій комірці, на яку посилається формула, ця комірка не повинна мати лапки навколо інтервального рядка. Наприклад, з формулою
= DATEDIF (Дата1, Дата2, А1)
клітинка A1 повинна містити m не "m".
Пригнічення компонентів нульового значення
При звичайному використанні для розрахунку кількості років, місяців і днів між двома датами слід використовувати формулу, наприклад, де A1 - дата початку, а B1 - дата завершення.
= DATEDIF (A1, B1, "y") & "роки" & DATEDIF (A1, B1, "ym") & "місяці" & DATEDIF (A1, B1, "md")
& "дні"
Це поверне рядок, наприклад
12 років 8 місяців 14 днів
Однак, якщо кількість років і / або місяців дорівнює 0, ви отримаєте рядок, подібний до
0 років 0 місяців 14 днів
0 років 3 місяці 14 днів
Якщо ви хочете придушити значення 0, і повернути результат, такий як
8 місяців 14 днів
або
14 днів
де не відображаються 0-значні компоненти, використовуйте формулу, подібну до наведеної нижче.
= IF (DATEDIF (A1, B1, "y") = 0, "", DATEDIF (A1, B1, "y") & "роки") & IF (DATEDIF (A1, B1, "ym") = 0, " ",
DATEDIF (A1, B1, "ym") & "місяці") & DATEDIF (A1, B1, "md") & "дні"
У цьому вікні відображатимуться лише компоненти дати, значення яких перевищує 0. Значення дня буде завжди відображатися, але рік і / або значення місяця можуть бути припинені.
Приклади
Нижче наведено кілька прикладів функції DATEDIF.
Дата1: 1-січня-2007
Date2: 10-Jan-2007
Інтервал: d
Результат: 9
Пояснення:
Між цими двома датами існує 9, а не 10 календарних днів.
Дата1: 1-січня-2007
Дата2: 31 січня-2007
Інтервал: m
Результат: 0
Пояснення:
Існує 0 повних календарних місяців між двома датами.
Дата1: 1-січня-2007
Date2: 1-Feb-2007
Інтервал: m
Результат: 1
Пояснення:
Між двома датами є 1 повний місяць.
Дата1: 1-січня-2007
Date2: 28-Feb-2007
Інтервал: m
Результат: 1
Пояснення:
Між двома датами є 1 повний місяць.
Дата1: 1-січня-2007
Date2: 31-Dec-2007
Інтервал: d
Результат: 364
Пояснення:
Між цими датами існує 364 дні.
Дата1: 1-січня-2007
Дата2: 31 січня-2007
Інтервал: y
Результат: 0
Пояснення:
Між датами існує 0 років
Дата1: 1-січня-2007
Дата2: 1-липня-2008
Інтервал: d
Результат: 547
Пояснення:
Між цими датами існує 547 днів.
Дата1: 1-січня-2007
Дата2: 1-липня-2008
Інтервал: m
Результат: 18
Пояснення:
Між двома датами існує 18 місяців.
Дата1: 1-січня-2007
Дата2: 1-липня-2008
Інтервал: ym
Результат: 6
Пояснення:
Існує 6 місяців між двома датами, якщо дати вважаються такими ж роками. Рік, який він взяв з Date1, а не Date2. Це має значення, коли один рік - високосний рік. З 2007 року не високосний рік, 29-лютого не враховується. Див. DATEDIF і Leap Years нижче.
Дата1: 1-січня-2007
Дата2: 1-липня-2008
Інтервал: yd
Результат: 181
Пояснення:
Існує 181 день між датами, якщо дати вважаються такими ж роками. Рік, який він взяв з Date1, а не Date2. Це має значення, коли один рік - високосний рік. З 2007 року не високосний рік, 29-лютого не враховується. Див. DATEDIF і Leap Years нижче.
Дата1: 1-Jan-2008
Дата2: 1-липня-2009
Інтервал: yd
Результат: 182
Пояснення:
Існує 182 дні між датами, якщо дати вважаються такими ж роками. Цей результат 182 не 181, оскільки Date1 є високосним роком і, таким чином, вважається 29-лютого.
Дата1: 1-січня-2007
Дата2: 31 січня-2007
Інтервал: md
Результат: 30
Пояснення:
Існує 30 днів між 1-м і 31-м датами, коли місяць і роки обидві дати вважаються однаковими.
DATEDIF і високосні роки
При обчисленні інтервалів дат DATEDIF використовує рік Date1, а не Date2 при обчисленні інтервалів yd, ym і md. Наприклад,
= DATEDIF (Date1, Date2, "md")
повертає 28 для Date1 = 1-Feb-2007 і Date2 = 1-March-2009. Оскільки Date1 не є високосною, дата 29-лютого не враховується. Але та ж формула з Date1 = 1-Feb-2008 повертає 29, оскільки Date1 є високосним роком і тому дата 29-лютого враховується.
Розрахунок віку
Ви можете використовувати DATEDIF для обчислення віку людини. Наприклад, нижченаведена формула розраховує вік особи на поточну дату, коли дата народження є датою народження особи.
= DATEDIF (Дата народження, TODAY (), "y") & "років" & DATEDIF (Дата народження, TODAY (), "ym") & "місяці" & DATEDIF (Дата народження, TODAY (), "md") & "днів"