В Excel нет специальной функции, чтобы посчитать возраст, однако существует несколько различных способов его определения на основе даты рождения. Вы узнаете несколько приемов, как рассчитать его в количестве полных лет, в годах, месяцах и днях на текущий момент или на какой-то определённый момент времени. Мы объясним преимущества и недостатки каждого способа, покажем, как создать идеальную формулу расчета возраста в Экселе и настроить ее для решения некоторых конкретных задач.
В повседневной жизни вопрос «Сколько вам лет?» обычно подразумевает ответ, указывающий, сколько лет вы прожили. В Microsoft Excel вы можете создать формулу для исчисления точной продолжительности жизни в месяцах, днях, часах и даже минутах. Но давайте не будем нарушать традицию и научимся сначала считать по полным годам.
Основная формула Excel расчета для возраста в годах.
Как вы обычно определяете, сколько вам лет? Просто вычитая дату рождения из текущей. Этот традиционный подход, знакомый нам еще с детства, может также использоваться в Excel.
Возраст в Excel — в годах, месяцах, днях. Функция РАЗНДАТ
Чтобы отобразить количество прожитых лет, используйте один из предлагаемых методов округления десятичного числа до ближайшего целого:
Функция ЦЕЛОЕ округляет в меньшую сторону до ближайшего целого.
Округляет количество прожитых лет по стандартным правилам в зависимости от значения дробной части (более 0,5 — в большую сторону).
Округляет в меньшую сторону.
Отбрасывает дробную часть, оставляя только целое.
Во всех случаях ноль в формуле означает, что в возвращаемой цифре не должно быть ни одного десятичного разряда.
Недостатки: использование этого выражения в Экселе дает довольно точные результаты, но не безупречные. Деление на среднее число дней в году в большинстве случаев работает нормально, но иногда все же показывает неверный возраст. Например, если кто-то родился 29 февраля, а сейчас 28 февраля, программа сделает человека на один день старше.
В качестве альтернативы вы можете использовать в знаменателе 365,25 вместо 365, поскольку каждый четвертый год состоит из 366 дней. Однако и этот подход не идеален. Например, если вы рассчитываете возраст ребенка, который еще не прожил високосный год, деление на 365,25 дает неправильный результат.
Как определить возраст с функцией ДОЛЯГОДА.
Более надежный способ расчета, чем те, о которых мы говорили ранее, — это использование функции ДОЛЯГОДА (YEARFRAC в английском варианте), которая возвращает часть года, то есть количество целых дней между двумя датами.
Синтаксис здесь следующий:
YEARFRAC (дата_начала, дата_окончания, [базис])
Первые два аргумента очевидны и вряд ли требуют какого-либо дополнительного объяснения. А вот Базис — это аргумент, который определяет основу для подсчета дней.
Чтобы составить абсолютно точную формулу, передайте в ДОЛЯГОДА следующие значения:
ДАТЫ В EXCEL | РАЗНИЦА МЕЖДУ ДАТАМИ В ДНЯХ, МЕСЯЦАХ, ГОДАХ |С (ИЛИ БЕЗ) УЧЁТОМ ВЫХОДНЫХ И ПРАЗДНИКОВ
- Дата_начала — дата рождения.
- Дата_окончания — функция СЕГОДНЯ() для использования текущего момента времени.
- Базис — используйте 1, которая предписывает Excel делить фактическое количество дней в месяце на фактическое количество дней в году. Никаких усредненных цифр типа 360 или 365 здесь не используется.
Учитывая вышеизложенное, формула Excel для расчета возраста по дате рождения выглядит следующим образом:
Предполагая, что ДР вписан в ячейку B2, выражение принимает следующий вид:
Как и в предыдущем примере, результат также является десятичным числом. Чтобы исправить это, используйте любой из подходящих вам методов округления.
Итак, вот улучшенный вариант:
Метод округления можете выбрать сами.
Особенности применения этих функций мы уже рассмотрели выше.
Как узнать возраст в Excel при помощи РАЗНДАТ.
Еще один способ — использование функции РАЗНДАТ (DATEDIF):
дата_нач и дата_кон — две даты, разницу между которыми необходимо рассчитать,
Она может возвращать разницу в различных единицах времени, таких как годы, месяцы и дни, в зависимости от параметра, который вы задаете в аргументе:
- Y — возвращает количество лет.
- M — количество месяцев.
- D — количество дней.
- YM — возвращает месяцы, игнорируя дни и годы.
- MD — разница в днях, игнорируя месяцы и годы.
- YD — разница в днях, игнорируя годы.
Поскольку мы хотим подсчитать возраст в годах, мы используем параметр «Y»:
В этом примере день рождения записан в ячейке B2, и вы ссылаетесь на него в своей формуле возраста:
В этом случае дополнительная операция округления не требуется, так как РАЗНДАТ с аргументом «Y» сразу выводит количество лет.
Рассчитываем в днях, месяцах и годах.
Высчитывать можно не только количество лет, как это обычно принято, но и более мелкие единицы времени.
Давайте попробуем рассчитать полный возраст, который включает в себя дни, месяцы и годы.
Фактически, определение чьего-либо возраста на основе даты рождения является частным случаем расчета разницы в датах в Excel, где конечной датой является текущий момент времени. Итак, вы используете обычную функцию РАЗНДАТ:
Где В2 — дата рождения.
Ну а если нужно сделать совсем красиво, используйте более сложное выражение:
И вот что получится:
Более подробно об использовании функции РАЗНДАТ читайте в материале о расчете разности между датами в Excel.
Сколько вам будет на определённую дату?
Вы можете воспользоваться формулой РАЗНДАТ из предыдущего раздела, но вместо СЕГОДНЯ() используйте ссылку на ячейку, в которой и будет указано, на какой именно момент времени вы хотите определить возраст человека.
Кстати, аналогичным образом можно определять и величину трудового стажа.
Итак, вот как это может выглядеть:
Сколько вам будет лет в определенный год?
Эта формула полезна в ситуациях, когда полная дата для расчета не определена, и вы знаете только год.
Допустим, вы работаете с медицинской базой данных, и ваша цель – выяснить, сколько лет пациенту на момент последнего полного медицинского обследования.
Если предположить, что ДР указан в столбце B, начиная со строки 2, а год последнего медицинского осмотра находится в столбце C, то расчет выглядит следующим образом:
Поскольку точный срок медицинского осмотра не определен, вы используете функцию ДАТА с произвольным аргументом дня и месяца, например, DATА(C3; 1; 1).
Функция ДАТА извлекает номер года из ячейки С2, создает полную дату, используя введенные вами номера месяца и дня (в этом примере 1 января), и передает ее в РАЗНДАТ. В результате вы получаете сумму прожитых пациентом лет по состоянию на 1 января определенного года.
Узнайте дату, когда человек достигает N лет
Предположим, ваш друг родился 21 марта 1974 года. Как вам определить, когда ему исполняется 50 лет? Обычно вы просто добавляете 50 лет к ДР человека. В Excel вы делаете то же самое, используя ДАТА:
Где B2 — день рождения.
Вместо того, чтобы жестко указывать количество лет в формуле, вы можете сослаться на определенную ячейку, в которую ваши пользователи могут вводить сколько угодно лет.
Калькулятор возраста для Excel
Пользователям надстройки Ultimate Suite не нужно беспокоиться о создании своего собственного калькулятора возраста в Excel — это всего лишь пара щелчков мышью:
- Выберите ячейку, в которую вы хотите вставить формулу возраста, перейдите на вкладку «AblebitsTools»> группу «Date TimeWizard)» .
- Мастер даты и времени запустится, и вы перейдете прямо на вкладку «Возраст (Age)».
- Здесь вам нужно указать 3 параметра:
- Данные о рождении в виде ссылки на ячейку или дату в формате дд/мм/гггг.
- Рассчитывать возраст на сегодняшний день или на конкретную дату.
- Выберите, следует ли рассчитывать возраст в днях, месяцах, годах, неделях, или в полном виде (лет, месяцев, дней).
- Нажмите кнопку « Вставить формулу (InsertFormula)» .
Формула мгновенно вставляется в выбранную ячейку, и вы можете дважды щелкнуть маркер заполнения, чтобы скопировать его вниз по столбцу.
Как вы могли заметить, формула, созданная калькулятором возраста в Excel, более сложна, чем те, которые мы обсуждали до сих пор.
К сожалению, пока русской локализации нет, но вы легко можете заменить в формуле английские слова на русские и затем использовать ее там, где это необходимо.
Либо вовсе не добавляйте текст и получите возраст в виде текста «лет/месяцев/дней» (см. ячейку B7 на скриншоте выше).
Если вы хотите избавиться от нулевых единиц, таких как «0 дней», установите флажок «Не показывать нулевые значения».
Также вы можете более подробно узнать о мастере даты и времени здесь.
Если вам интересно протестировать этот калькулятор возраста, а также открыть для себя еще 60 надстроек для экономии времени в Excel, то можете загрузить пробную версию Ultimate Suite. Если вам понравились инструменты и вы решили получить лицензию, не пропустите это специальное предложение для читателей нашего сайта.
Надеюсь, из рассмотренных нами вариантов вы сможете выбрать для себя самый наилучший и удобный, чтобы посчитать возраст человека по дате его рождения.
Также рекомендуем почитать о работе с датами:
Как перевести время в число — В статье рассмотрены различные способы преобразования времени в десятичное число в Excel. Вы найдете множество формул для преобразования времени в часы, минуты или секунды. Поскольку Microsoft Excel использует числовую систему для работы с временем, вы можете…
Как посчитать время – разницу, сумму, добавить или вычесть — В статье рассматривается, как в Excel посчитать время. Вы найдете несколько полезных формул чтобы посчитать сумму времени, разницу во времени или сколько времени прошло и многое другое. Ранее мы внимательно рассмотрели…
Формат времени в Excel — Вы узнаете об особенностях формата времени Excel, как записать его в часах, минутах или секундах, как перевести в число или текст, а также о том, как добавить время с помощью…
Как вывести месяц из даты — На примерах мы покажем, как получить месяц из даты в таблицах Excel, преобразовать число в его название и наоборот, а также многое другое. Думаю, вы уже знаете, что дата в…
Функция Excel СЕГОДНЯ — синтаксис и основные применения — Функция СЕГОДНЯ в Excel делает именно то, на что указывает ее имя — возвращает сегодняшнюю дату. Синтаксис ее настолько прост, насколько это вообще возможно — у нее вообще нет аргументов. Всякий…
Как быстро вставить сегодняшнюю дату в Excel? — Это руководство показывает различные способы ввода дат в Excel. Узнайте, как вставить сегодняшнюю дату и время в виде статической метки времени или динамических значений, как автоматически заполнять столбец или строку…
Количество рабочих дней между двумя датами в Excel — Довольно распространенная задача: определить количество рабочих дней в период между двумя датами – это частный случай расчета числа дней, который мы уже рассматривали ранее. Тем не менее, в Excel для…
Как посчитать количество дней между датами в Excel? Примеры и советы. — Из этого обзора вы узнаете несколько быстрых и простых способов подсчета, сколько дней проходит между двумя датами в Excel. Вам интересно, сколько составляет разница в днях, месяцах и годах между…
Как преобразовать текст в дату в Excel или извлечь ее из сложной фразы? — Сейчас вы научитесь использовать функции Excel для преобразования текста в дату. Вы также узнаете, как это сделать без использования формул. Поскольку Excel — не единственное приложение, которое вы используете, иногда…
Источник: mister-office.ru
Программа C для печати количества дней в месяце
Если задано число N , задача состоит в том, чтобы найти количество дней, соответствующее каждому месяцу, где 1 — январь, 2 — февраль, 3 — март и т. Д.
Примеры:
Input: N = 12
Output: 31 DaysInput: N = 2
Output: 28/29 Days
Рекомендуется: сначала попробуйте свой подход в , прежде чем переходить к решению.
Метод — 1: использование If Else:
- Получите входной месяц в виде числа N.
- Если N — одно из значений 1, 3, 5, 7, 8, 10, 12, выведите «31 день». .
- Если N — одно из значений 4, 6, 9, 11, выведите «30 дней». .
- Если N равно 2, выведите «28/29 дней». .
- В противном случае напечатайте «Недействительный месяц» .
Источник: progler.ru
Программа которая по заданному году и номеру месяца определяет количество дней в этом месяце
Дата некоторого дня характеризуется тремя натуральными числами: g (год), m (порядковый номер месяца) и n(число). По заданным g, n и m определить дату предыдущего дня.
Сделать программу через подпрограмму.
var g,n,m:integer; procedure a; var g,n,m:integer; begin if g=1 then if n=1 then begin g:=31; n:=12; m:=m-1; end else begin n:=n-1; if n=1 then g:=31; if n=2 then g:=28; if n=3 then g:=31; if n=4 then g:=30; if n=5 then g:=31; if n=6 then g:=30; if n=7 then g:=31; if n=8 then g:=31; if n=9 then g:=30; if n=10 then g:=31; if n=11 then g:=30; if n=12 then g:=31; end else begin g:=g-1; end; end; begin writeln(‘введите дату в формате День.Месяц.Год’); readln(g,n,m); a; writeln(g,n,m); end.
Он мне почему то день выводит ту же самую дату что и ввел, и условие где выдает сколько дней в месяце как нибудь поменьше сделать
Последний раз редактировалось Guagpro; 23.01.2013 в 18:54 .
Регистрация: 17.11.2010
Сообщений: 19,042
EncodeDate(g,n,m) — дата
EncodeDate(g,n,m)-1 — дата предыдущего дня
DaysInAMonth — кол-во дней в заданном году и месяце
Не обратил внимания, что паскаль. Это для дельфей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Регистрация: 21.01.2013
Сообщений: 9
EncodeDate(g,n,m) — дата
EncodeDate(g,n,m)-1 — дата предыдущего дня
DaysInAMonth — кол-во дней в заданном году и месяце
Не обратил внимания, что паскаль. Это для дельфей
Регистрация: 21.01.2013
Сообщений: 9
Сделал вот так строчка с вызовом процедуры в самом паскале почему то пропускается и выдает мне то же число что я ввел изначально если удаляю строчку mes(g,n,m); ничего не меняется.HELPPP
var g,n,m:integer; procedure mes(g,n,m:integer); begin if g =1 then if n=1 then begin g:=31;n:=12;m:=m-1; end else begin case n of 3,5,7,8,10,12:g:=31; 4,6,9,11:g:=30; 2:g:=28; end; g:=g-1; end else g:=g-1; end; begin write(‘data’); read(g,n,m); mes(g,n,m); writeln(g,’.’,n,’.’,m); end.
Регистрация: 16.05.2012
Сообщений: 3,211
Мой вариант — без учета високосных лет — как-то так:
const days:array [1..12] of word=(31,28,31,30,31,30,31,31,30,31,30,31); Procedure PrevDay(var d,m,y: word); begin if (d=1) then begin if (m=1) then begin y:=y-1; m:=12; d:=Days[12]; end else begin m:=m-1; d:=Days[m]; end end else d:=d-1; end; var g,n,m:word; begin ReadLn(n,m,g); WriteLn(n,’.’,m,’.’,g); PrevDay(n,m,g); WriteLn(n,’.’,m,’.’,g); ReadLn; end.
А в Вашей программе чтобы все заработало — нужна самая малость:
procedure mes(var g,n,m:integer);
Источник: www.programmersforum.ru