=РАЗНДАТ(B2;СЕГОДНЯ();"Y") возвращает возраст в полных годах человека, родившегося в дату из B2. РАЗНДАТ (по-английски DATEDIF) считает полные годы между двумя датами, а СЕГОДНЯ() (TODAY) даёт вторую дату, поэтому возраст увеличивается на единицу в каждый день рождения. В таблице ниже формулы записаны по-английски, но их можно вводить и по-русски, с точкой с запятой.
| A | B | C | |
|---|---|---|---|
| 1 | Name | Born | Age |
| 2 | Ana | 1990-05-14 | 36 |
| 3 | Ben | 1985-11-30 | 40 |
| 4 | Chloe | 2001-02-28 | 25 |
| 5 | Dan | 1978-10-10 | 47 |
| 6 | Eva | 2010-07-04 | 16 |
=РАЗНДАТ(B2;СЕГОДНЯ();"Y")Возраст в столбце C считается от сегодняшней даты, поэтому он меняется в течение года. Измените дату рождения в столбце B, и возраст рядом изменится. У формулы три аргумента: начальная дата (дата рождения), конечная дата (сегодня) и единица, "Y" для полных лет.
Возраст на определённую дату
Чтобы получить возраст на конкретный день, например на начало учебного года или на дату договора, поставьте этот день в ячейку и используйте ячейку вместо СЕГОДНЯ(). $ в $F$2 удерживает ссылку на F2, когда формула протягивается вниз.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | ||
| 2 | Ana | 1990-05-14 | 36 | 2026-10-01 | ||
| 3 | Ben | 1985-11-30 | 40 | |||
| 4 | Chloe | 2001-02-28 | 25 | |||
| 5 | Dan | 1978-10-10 | 47 | |||
| 6 | Eva | 2010-07-04 | 16 |
=РАЗНДАТ(B2;$F$2;"Y")На 2026-10-01 Ana 36 лет, а Dan 47: его день рождения 10 октября ещё не наступил. Замените F2 на 2026-10-10, и Dan исполнится 48. Этот вариант к тому же даёт одинаковый результат при каждом открытии файла, а это важно, когда возраст попадает в отчёт. Другие единицы описаны на странице РАЗНДАТ.
Возраст в годах, месяцах и днях
У РАЗНДАТ есть единицы для частей, которые остаются после полных лет: "YM" считает месяцы после последнего полного года, а "MD" дни после последнего полного месяца. Соедините все три через &, чтобы записать возраст текстом.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Born | Years | Months | Days | Age | As of |
| 2 | 1990-05-14 | 36 | 4 | 17 | 36 years, 4 months, 17 days | 2026-10-01 |
| 3 | 1978-10-10 | 47 | 11 | 21 | 47 years, 11 months, 21 days |
=B2&" years, "&C2&" months, "&D2&" days"От 1990-05-14 до 2026-10-01 проходит 36 лет, 4 месяца и 17 дней. Microsoft не советует пользоваться единицей "MD", потому что в некоторых случаях, например при дате рождения 31-го числа, она может вернуть отрицательное или неверное число дней. Проверяйте число дней, когда дата рождения приходится на 29-е, 30-е или 31-е.
Возраст без РАЗНДАТ
РАЗНДАТ работает во всех версиях Excel, но её нет в списке функций и в автозавершении формул, поэтому некоторые предпочитают ДОЛЯГОДА (YEARFRAC). ДОЛЯГОДА(start;end;1) возвращает число лет между двумя датами как десятичную дробь, учитывая настоящую длину каждого года (базис 1). ЦЕЛОЕ (INT) отбрасывает дробную часть.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Born | As of | DATEDIF | YEARFRAC |
| 2 | 1990-05-14 | 2026-10-01 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 47 | 47 |
| 4 | 2010-07-04 | 2026-10-01 | 16 | 16 |
=ЦЕЛОЕ(ДОЛЯГОДА(A2;B2;1))Оба столбца совпадают: 36, 47 и 16. Без ЦЕЛОЕ ДОЛЯГОДА для последней строки возвращает около 16,24, и это удобно, когда возраст нужен десятичной дробью, например в статистической таблице.
Почему не делить на 365
Частое сокращение это =ЦЕЛОЕ((F2-B2)/365): число прожитых дней, делённое на число дней в году. Високосные годы добавляют день раз в четыре года, поэтому через несколько десятилетий формула доходит до следующего возраста раньше дня рождения: для 48-летия на 12 дней раньше.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Born | As of | Days lived | Divide by 365 | DATEDIF |
| 2 | 1990-05-14 | 2026-10-01 | 13289 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 17523 | 48 | 47 |
=ЦЕЛОЕ(C2/365)Для человека, родившегося 1978-10-10, деление на 365 говорит, что 2026-10-01 ему 48, за девять дней до 48-летия. РАЗНДАТ говорит 47. Деление на 365,25 исправляет большинство строк, но на некоторых датах всё равно ошибается, поэтому используйте РАЗНДАТ или ДОЛЯГОДА.
Практика: возраст в первый школьный день
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | |
| 2 | Ana | 2012-04-17 | 2026-09-01 |
Ваша очередь: В C2 посчитайте возраст Ana в полных годах на дату из E2.
Скрытые проверки меняют дату в E2, поэтому формула должна её читать.
Почему возраст показан как дата
Если ввести формулу возраста в ячейку, где уже стоит дата, или в столбец с форматом даты, Excel сохранит формат даты и покажет 36 как 1900-02-05 (36-й день системы дат Excel; при американских настройках 2/5/1900). Число под ним верное. Выделите ячейки и выберите Главная > Числовой формат > Общий (или нажмите Ctrl+Shift+~, на Mac Control+Shift+~), и появится возраст.
Часто задаваемые вопросы
Какая формула считает возраст в Excel?
=РАЗНДАТ(B2;СЕГОДНЯ();"Y"), где дата рождения стоит в B2. Она считает полные годы от даты рождения до сегодня, поэтому возраст увеличивается в сам день рождения, а не раньше.
Как посчитать возраст на определённую дату в Excel?
Поставьте дату в ячейку и используйте её вместо СЕГОДНЯ(): =РАЗНДАТ(B2;$F$2;"Y") даёт возраст на дату в F2. Знаки $ закрепляют F2, когда формула протягивается вниз.
Как посчитать возраст в Excel без РАЗНДАТ?
Используйте =ЦЕЛОЕ(ДОЛЯГОДА(B2;СЕГОДНЯ();1)). ДОЛЯГОДА возвращает число лет между двумя датами как десятичную дробь, а ЦЕЛОЕ оставляет полные годы.
Почему формула возраста показывает дату вроде 1900-01-30?
У ячейки формат даты, поэтому возраст 30 показан как 30-й день календаря Excel. Выделите ячейку и выберите на вкладке Главная числовой формат Общий.
Почему делить на 365 для возраста неправильно?
Високосные годы добавляют день раз в четыре года, поэтому =ЦЕЛОЕ((СЕГОДНЯ()-B2)/365) засчитывает день рождения на несколько дней раньше: человеку, родившемуся 1978-10-10, по этой формуле 2026-10-01 уже 48, за девять дней до 48-летия. РАЗНДАТ считает календарные годы, и такой ошибки у неё нет.