Как посчитать разницу между датам в MS Excel
В MS Excel есть чрезвычайно интересная функция, о которой мало кто знает. Настолько мало, что к этой функции в экселе даже не предусмотрено контекстной подсказки при вводе, хотя, как ни странно, в справке к программе она есть и описана довольно неплохо. Называется она РАЗНДАТ() или DATEDIF() и служит для автоматического расчета разницы в днях, месяцах или годах между двумя заданными датами.
Звучит не очень? На самом деле, иногда возможность быстро и точно посчитать сколько же времени прошло с какого-то события, бывает очень полезна. Сколько месяцев прошло с дня вашего рождения, сколько времени вы уже просиживаете штаны на этом месте работы, или сколько дней вы сидите на диете — да мало ли применений этой полезной функции? А самое главное, подсчет можно автоматизировать и при каждом открытии книги MS Excel получать точные данные именно для сегодняшнего дня! Звучит интересно, неправда ли?
Функция РАЗНДАТ() принимает три аргумента:
- Начальная дата — дата с которой ведется счет
- Конечная дата — до которой ведется счет
- Единица измерения — дни, месяцы, годы.
Записывается это так:
=РАЗНДАТ(начальная дата;конечная дата;единица измерения)
Единицы измерения записываются как:
- «y» — разница дат в полных годах
- «m» — разница дат в полных месяцах
- «d» — разница дат в полных днях
- «yd» — разница дат в днях с начала года без учета лет
- «md» — разница дат в днях без учета месяцев и лет
- «ym» — разница дат в полных месяцах без учета лет
Иными словами, чтобы вычислить мой полный возраст в годах на текущий момент, я записываю функцию как:
=РАЗНДАТ(14.07.1984;22.03.2016;»y»)
Обратите внимание — последний аргумент всегда заключен в кавычки.
Если же я хочу получить точный возраст, то запишу усложненную формулу:
=РАЗНДАТ(F2;G2;»y»)&» год «&РАЗНДАТ(F2;G2;»ym»)&» месяцев»
В которой функция РАЗНДАТ() вызывается сразу два раза, с разными значения, а слова «год» и «месяцев» просто пристыковываются к результату. То есть настоящая мощь функции проявляется только тогда, когда её комбинируют с другими возможностями MS Excel.
Ещё один интересный вариант — добавить в функцию ежедневно сдвигающийся относительно сегодняшней даты счетчик. К примеру, если я решу писать формулу которая высчитывает количество дней до моего отпуска в стандартном виде, это будет выглядеть примерно так:
И все было бы правильно, если бы открыв через неделю этот лист, я увидел бы, что количество дней до отпуска сократилось. Однако я увижу тоже самое число — ведь исходные даты не менялись. Соответственно, мне пришлось бы изменить текущую дату, и тогда функция РАЗНДАТ() сделала бы все правильно.
Чтобы избежать это досадной мелочи, в качестве первого аргумента (сегодняшнего числа), я подставлю не ссылку на значение хранящееся в ячейке, а другую функцию. Эта функция называется СЕГОДНЯ() и её основная и единственная задача — возвращать сегодняшнюю дату.
Раз, и проблема решена — отныне, когда бы я не открыл этот лист MS Excel, функция РАЗНДАТ() всегда будет показывать мне точное значение, рассчитанное с учетом сегодняшней даты.