How to calculate age in Excel: from date of birth, between two dates

The tutorial shows different ways to get age from birthday in Excel. You will learn a handful of formulas to calculate age as a number of complete years, get exact age in years, months and days at today's date or a particular date.

There is no special function to calculate age in Excel, however there exist a few different ways to convert date of birth to age. This tutorial will explain the advantages and drawbacks of each way, shows how to make a perfect age calculation formula in Excel and tweak it for solving some specific tasks.

How to calculate age from date of birth in Excel

In everyday life, the question "How old are you?" usually implies an answer indicating how many years you have been alive. In Microsoft Excel, you can make a formula to compute an exact age in months, days, hours and even minutes. But let's be traditional, and learn how to calculate age from DOB in years first.

Basic Excel formula for age in years

How do you normally figure out someone's age? Simply by subtracting the birth date from the current date. This conventional age formula can also be used in Excel.

Assuming a birthdate is in cell B2, the formula to calculate age in years goes as follows:

=(TODAY()-B2)/365

The first part of the formula (TODAY()-B2) returns the difference between the current date and date of birth is days, and then you divide that number by 365 to get the numbers of years.

The formula is obvious and easy-to-remember, however, there is a tiny problem. In most cases, it returns a decimal number as demonstrated in the screenshot below.
Age calculation formula that returns decimal numbers

To display the number of complete years, use the INT function to round a decimal down to the nearest integer:

=INT((TODAY()-B2)/365)
Using the basic age calculation formula in Excel

Drawbacks: Using this age formula in Excel produces pretty accurate results, but not flawless. Dividing by the average number of days in a year works fine most of the time, but sometimes it gets the age wrong. For example, if someone was born on February 29 and today is February 28, the formula will make a person one day older.

As an alternative, you can divide by 365.25 instead of 365 since every fourth year has 366 days. However, this approach is not perfect either. For example, if you are calculating the age of a child who hasn't yet lived through a leap year, dividing by 365.25 produces a wrong result.

Overall, subtracting the birth date from the current date works great in normal life, but is not the ideal approach in Excel. Further on in this tutorial, you will learn a couple of special functions that calculate age faultlessly regardless of the year.

Calculate age from date of birth with YEARFRAC function

A more reliable way to convert DOB to age in Excel is using the YEARFRAC function that returns the fraction of the year, i.e. the number of whole days between two dates.

The syntax of the YEARFRAC function is as follows:

YEARFRAC(start_date, end_date, [basis])

The first two arguments are obvious and hardly require any additional explanation. Basis is an optional argument that defines the day count basis to use.

To make a perfectly true age formula, supply the following values to the YEARFRAC function:

  • Start_date - date of birth.
  • End_date - TODAY() function to return the today's date.
  • Basis - use basis 1 that tells Excel to divide the actual number of days per month by the actual number of days per year.

Considering the above, an Excel formula to calculate age from date of birth is as follows:

YEARFRAC(date of birth, TODAY(), 1)

Assuming the birthdate is in cell B2, the formula takes the following shape:

=YEARFRAC(B2, TODAY(), 1)
The YEARFRAC formula to convert DOB to age

Like in the previous example, the result of the YEARFRAC function is also a decimal number. To fix this, use the ROUNDDOWN function with 0 in the last argument because you don't want any decimal places.

So, here's an improved YEARFRAC formula to calculate age in Excel:

=ROUNDDOWN(YEARFRAC(B2, TODAY(), 1), 0)
An improved YEARFRAC formula to calculate age in years

Calculate age in Excel with DATEDIF

One more way to convert date of birth to age in Excel is using the DATEDIF function:

DATEDIF(start_date, end_date, unit)

This function can return the difference between two dates in various time units such as years, months and days, depending on the value you supply in the unit argument:

  • Y - returns the number of complete years between the start and end dates.
  • M - returns the number of complete months between the dates.
  • D - returns the number of days between the two dates.
  • YM - returns months, ignoring days and years.
  • MD - returns the difference in days, ignoring months and years.
  • YD - returns the difference in days, ignoring years.

Since we aim to calculate age in years, we are using the "y" unit:

DATEDIF(date of birth, TODAY(), "y")

In this example, the DOB is in cell B2, and you reference this cell in your age formula:

=DATEDIF(B2, TODAY(), "y")
DATEDIF formula to calculate age in years

No additional rounding function is needed in this case because a DATEDIF formula with the "y" unit calculates the number of full years:
DATEDIF formula to calculate age in Excel

How to get age from birthday in years, months and days

As you have just seen, calculating age as the number of full years that the person has lived is easy, but it is not always sufficient. If you want to know the exact age, i.e. how many years, months and days there are between someone's birth date and the current date, write 3 different DATEDIF functions:

  1. To get the number of years: =DATEDIF(B2, TODAY(), "Y")
  2. To get the number of months: =DATEDIF(B2, TODAY(), "YM")
  3. To get the number of days: =DATEDIF(B2,TODAY(),"MD")

Where B2 is the date of birth.

And then, concatenate the above functions in a single formula, like this:

=DATEDIF(B2,TODAY(),"Y") & DATEDIF(B2,TODAY(),"YM") & DATEDIF(B2,TODAY(),"MD")

The above formula returns 3 numbers (years, months, and days) concatenated in a single text string, as shown in the screenshot below:
To calculate an exact age, concatenate 3 DATEDIF functions

Does not make much sense, uh? To make the results more meaningful, separate the numbers with commas and define what each value means:

=DATEDIF(B2,TODAY(),"Y") & " Years, " & DATEDIF(B2,TODAY(),"YM") & " Months, " & DATEDIF(B2,TODAY(),"MD") & " Days"

The result looks much better now:
DATEDIF formula to calculate an exact age from date of birth

The formula works great, but you can improve it even further by hiding zero values. For this, add 3 IF statements that check for 0's, one per each DATEDIF:

=IF(DATEDIF(B2, TODAY(),"y")=0,"",DATEDIF(B2, TODAY(),"y")&" years, ")& IF(DATEDIF(B2, TODAY(),"ym")=0,"",DATEDIF(B2, TODAY(),"ym")&" months, ")& IF(DATEDIF(B2, TODAY(),"md")=0,"",DATEDIF(B2, TODAY(),"md")&" days")

The following screenshot demonstrates the final Excel age formula in action - it returns age in years, months, and days, displaying only non-zero values:
An improved formula to calculate age from DOB in years, months and days

Tip. If you are looking for an Excel formula to calculate age in years and months, take the above formula and remove the last IF(DATEDIF()) block that computes days.

Specific formulas to calculate age in Excel

The generic age calculation formulas discussed above work great in most cases. In some situations, however, you may need something very specific. Of course, it's not possible to cover every and each scenario, but the following examples will give you some ideas on how you can tweak an age formula depending on your particular task.

How to calculate age on a specific date in Excel

If you want to know someone's age at a certain date, use the DATEDIF age formula discussed above, but replace the TODAY() function in the 2nd argument with the specific date.

Assuming the birth date is in B1, the following formula will return age as of 1 January 2020:

=DATEDIF(B1, "1/1/2020","Y") & " Years, " & DATEDIF(B1, "1/1/2020","YM") & " Months, " & DATEDIF(B1, "1/1/2020", "MD") & " Days"

To make your age formula more flexible, you can input the date in some cell and reference that cell in your formula:

=DATEDIF(B1, B2,"Y") & " Years, "& DATEDIF(B1,B2,"YM") & " Months, "&DATEDIF(B1,B2, "MD") & " Days"

Where B1 is the DOB, and B2 is the date on which you want to calculate age.
Calculating age from DOB at a particular date

Calculate age in a certain year

This formula comes in handy in situations when the complete date to calculate at is not defined, and you know only the year.

Let's say you are working with a medical database, and your goal is to find out the patients' age at the time they underwent the last full medical examination.

Assuming the dates of birth are in column B beginning with row 3, and the year of the last medical examination is in column C, the age calculation formula goes as follows:

=DATEDIF(B3,DATE(C3, 1, 1),"y")

Because the exact date of the medical examination is not defined, you use the DATE function with an arbitrary date and month argument, e.g. DATE(C3, 1, 1).

The DATE function extracts the year from cell B3, makes a complete date using the month and day numbers that you supplied (1-Jan in this example), and passes that date to DATEDIF. As the result, you get the patient's age as of January 1 of a particular year:
Calculating age as of January 1 of a particular year

Find out a date when a person attains N years of age

Supposing your friend was born on 8 March 1978. How do you know on what date he completes his 50 years of age? Usually, you'd simply add 50 years to the person's birthdate. In Excel, you do the same using the DATE function:

=DATE(YEAR(B2) + 50, MONTH(B2), DAY(B2))

Where B2 is the date of birth.

Instead of hard-coding the number of years in the formula, you can reference a certain cell where your users can input any number of years (F1 in the screenshot below):
Finding out a date when a person attains N years of age

Calculate age from day, month and year in different cells

When a birthdate is split into 3 different cells (e.g. year is in B3, month in C3 and day in D3), you can calculate age in this way:

  • Get the date of birth by using the DATE and DATEVALUE functions:
    DATE(B3,MONTH(DATEVALUE(C3&"1")),D3)
  • Embed the above formula into DATEDIF to calculate age from date of birth in years, months, and days:=DATEDIF(DATE(B3, MONTH(DATEVALUE(C3&"1")), D3), TODAY(), "y") & " Years, "& DATEDIF(DATE(B3, MONTH(DATEVALUE(C3&"1")), D3),TODAY(), "ym") & " Months, "& DATEDIF(DATE(B3, MONTH(DATEVALUE(C3&"1")), D3), TODAY(), "md") & " Days"
    Calculating age from day, month and year in different cells

For more examples of calculating the number of days before/after a date, please see How to calculate days since or until date in Excel.

Age calculator in Excel

If you'd like to have your own age calculator in Excel, you can make one by using a few different DATEDIF formulas explained below. If you'd rather not reinvent the wheel, you can use the age calculator created by our Excel professionals.

How to create an age calculator in Excel

Now that you know how to make an age formula in Excel, you can build a custom age calculator, for example this one:

What you see above is an embedded Excel Online sheet, so feel free to enter your birthdate in the corresponding cell, and you will get your age in a moment.

The calculator uses the following formulas to compute age based on the date of birth in cell A3 and today's date.

  • Formula in B5 calculates age in years, months, and days:=DATEDIF(B2,TODAY(),"Y") & " Years, " & DATEDIF(B2,TODAY(),"YM") & " Months, " & DATEDIF(B2,TODAY(),"MD") & " Days"
  • Formula in B6 calculates age in months:=DATEDIF($B$3,TODAY(),"m")
  • Formula in B7 calculates age in days:=DATEDIF($B$3,TODAY(),"d")

If you have some experience with Excel Form controls, you can add an option to compute age at a specific date, like shown in the following screenshot:
An improved Excel age calculator

For this, add a couple of option buttons (Developer tab > Insert > Form controls > Option Button), and link them to some cell. And then, write an IF/DATEDIF formula to get age either at today's date or at the date specified by the user.

The formula works with the following logic:

  • If the Today's date option box is selected, value 1 appears in the linked cell (I5 in this example), and the age formula calculates based on the today date:IF($I$5=1, DATEDIF($B$3,TODAY(),"Y") & " Years, " & DATEDIF($B$3,TODAY(), "YM") & " Months, " & DATEDIF($B$3, TODAY(), "MD") & " Days")
  • If the Specific date option button is selected AND a date is entered in cell B7, age is calculated at the specified date:IF(ISNUMBER($B$7), DATEDIF($B$3, $B$7,"Y") & " Years, " & DATEDIF($B$3, $B$7,"YM") & " Months, " & DATEDIF($B$3, $B$7,"MD") & " Days", ""))

Finally, nest the above functions into each other, and you will get the complete age calculation formula (in B9):

=IF($I$5=1, DATEDIF($B$3, TODAY(), "Y") & " Years, " & DATEDIF($B$3, TODAY(), "YM") & " Months, " & DATEDIF($B$3, TODAY(), "MD") & " Days", IF(ISNUMBER($B$7), DATEDIF($B$3, $B$7,"Y") & " Years, " & DATEDIF($B$3, $B$7,"YM") & " Months, " & DATEDIF($B$3, $B$7,"MD") & " Days", ""))

The formulas in B10 and B11 work with the same logic. Of course, they are much simpler because they include just one DATEDIF function to return age as the number of complete months or days, respectively.

To learn the details, I invite you to download this Excel Age Calculator and investigate the formulas in cells B9:B11.

Download Age Calculator for Excel

Ready-to-use age calculator for Excel

The users of our Ultimate Suite don't have to bother about making their own age calculator in Excel - it is only a couple of clicks away:

  1. Select a cell where you want to insert an age formula, go to the Ablebits Tools tab > Date & Time group, and click the Date & Time Wizard button.
    Date & Time Wizard for Excel
  2. The Date & Time Wizard will start, and you go directly to the Age tab.
  3. On the Age tab, there are 3 things for you to specify:
    • Data of birth as a cell reference or a date in the mm/dd/yyyy format.
    • Age at today's date or specific date.
    • Choose whether to calculate age in days, months, years, or exact age.
  4. Click the Insert formula button.

Done!
Age Calculator for Excel

The formula is inserted in the selected cell momentarily, and you double-click the fill handle to copy it down the column.
An advanced age formula in Excel

As you may have noticed, the formula created by our Excel age calculator is more complex than the ones we've discussed so far, but it caters for singular and plural of time units such as "day" and "days".

If you'd like to get rid of zero units like "0 days", select the Do not show zero units check box:
Calculate age ignoring zero units.

If you are curious to test this age calculator as well as to discover 60 more time-saving add-ins for Excel, you are welcome to download a trial version of our Ultimate Suite at the end of this post.

How to highlight certain ages (under or over a specific age)

In some situations, you may need not only calculate age in Excel, but also highlight cells which contain ages that are under or over a particular age.

If your age calculation formula returns the number of complete years, then you can create a regular conditional formatting rule based on a simple formula like these ones:

  • To highlight ages equal to or greater than 18: =$C2>=18
  • To highlight ages under 18: =$C2<18

Where C2 is the top-most cell in the Age column (not including the column header).
Highlighting ages that are under or over a specific age

But what if your formula displays age in years and months, or in years, months and days? In this case, you will have to create a rule based on a DATEDIF formula that calculates age from date of birth in years.

Supposing the birthdates are in column B beginning with row 2, the formulas are as follows:

  • To highlight ages under 18 (yellow):=DATEDIF($B2, TODAY(),"Y")<18
  • To highlight ages between 18 and 65 (green):=AND(DATEDIF($B2, TODAY(),"Y")>=18, DATEDIF($B2, TODAY(),"Y")<=65)
  • To highlight ages over 65 (blue):=DATEDIF($B2, TODAY(),"Y")>65

To create rules based on the above formulas, select the cells or entire rows that you want to highlight, go to the Home tab > Styles group, and click Conditional Formatting > New Rule… > Use a formula to determine which cells to format.

The detailed steps can be found here: How to make a conditional formatting rule based on formula.
DATEDIF formulas to highlight ages that are under, between or over a specific age

This is how you calculate age in Excel. I hope the formulas were easy for you to learn and you will give them a try in your worksheets. Thank you for reading and hope to see you on our blog next week!

Available downloads

Excel Age Calculation examples (.xlsx file)
Ultimate Suite 14-day fully-functional version (.exe file)

131 comments

  1. I was able to resolve by using this feature along with the FIND and REPLACE
    In many Windows applications that handle text, most notably Microsoft Word, you can use the ASCII code to insert a non-breaking space/blank character by holding down "Alt", typing 255 on your numeric keypad, then releasing "Alt." Note that this won't work if you use the ordinary number keys.
    I did this command to remove the space on that column and it immediately converted the Text date to January 1 to a current date 1/1/2020. and then at that point the Formula worked.

    Reply

  2. for more than 7yrs of service Rs.30/- will get; more than 14 yrs of service Rs40/- will get.I ve written=IF(AND(DATEDIF(C10,TODAY(),"Y")>7,DATEDIF(C10,TODAY(),"Y")14,DATEDIF(C10,TODAY(),"Y")21,60,0))).but problem is if year of service is 14 yrs 2 month, it is showing RS:30/ in place of 40/-.
    kindly help

  3. Date of birth criteria is O1.06.2017 to 31.05.2018, we have check the by Date of birth of applications whether they are in prescribed criteria any formula please update

  4. Thank you!!

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)