Leap year in excel

Explanation 

The core of this formula is the DATE function, which will automatically adjust to month and year values that are out of range. In the formula, year is passed into date unchanged, along with 2 for month (February) and 29 for the day. In leap years, February has 29 days, so the DATE function will simply return the date February 29 of the year.

In non-leap years however, DATE will return the date March 1 of the year, because there is no 29th day in February, and DATE simply rolls the date forward to the next month.

Finally, the MONTH function simply extracts the month from the result provided by DATE, which is compared to 2 using the equal sign. If the month is 2, the formula returns TRUE. If not, the month must be 3 and the formula returns FALSE.

Test year only

To check a year only, instead of a full date, instead of a date, modify the formula as below:

=MONTH(DATE(year,2,29))=2

In this version, we don’t extract a year value from a date, we pass a year value (i.e. 2020)  directly to the DATE function.

A more literal solution

If the formula above seems too clever, and you want a more literal solution, the formula below will test if a year contains 366 days instead:

=DATE(YEAR(date)+1,1,1)-DATE(YEAR(date),1,1)=366

This formula generates two dates based on the date provided: (1) the first of the next year, and (2) the first of the current year. Then the first of the current year is subtracted from the first of the next year. In non-leap years, the result is 365 and the formula returns FALSE. In leap years, the result is 366 and the formula returns TRUE.

Figure 1. Year is a Leap Year in Excel.

We are going to use a formula that consists of the Excel MONTH, YEAR, and DATE functions in order to ascertain whether the year of a given date is a leap year,

Generic Formula

=MONTH(DATE(YEAR(date),2,29))=2

In the formula above, February has 29 days during a leap year, and the number 2 is for the month of February.

How to use the Excel MONTH, YEAR, and DATE Functions.

We are now going to utilize the Excel MONTH YEAR and DATE Functions in 3 simple steps;

  1. Enter the day, month, and year values in a column of our worksheet.

Be sure to label a separate column for Excel to indicate which of the dates occur on a leap year.

See example illustrated below;

Figure 2. Year is a Leap Year in Excel.

  1. In the example illustrated above, we are going to enter the following MONTH, YEAR, and DATE formula into cell B2;

=MONTH(DATE(YEAR(A2),2,29))=2

Figure 3. Year is a  Leap Year in Excel.

  1. After Excel has returned the initial result, copy the formula into the cells down the column for the next results to be returned.

Figure 4. Year is a Leap Year in Excel.

If the year is a Leap Year, the formula returns TRUE and if not, the formula returns FALSE.

However, during non-leap years, the date March 1 of the year will be returned by the DATE Function because the 29th day does not exist.

Instant Connection to an Expert through our Excelchat Service:

Our live Excelchat Service is here for you. We have Excel Experts available 24/7 to answer any Excel questions you may have. Guaranteed connection within 30 seconds and a customized solution for you within 20 minutes

Leap Year

Today is a special day.  Today is February 29th, which happens only once every four years.  And today is Saturday, when I usually post a new blog.  So let’s talk about how to determine if a year is leap year using Excel.

First of all, what is leap year?

We may find a detailed explanation in Wikipedia.  Below is part of the article describing how to determine a leap year without needing an Excel formula.

…in the Gregorian calendar, each leap year has 366 days instead of 365, by extending February to 29 days rather than the common 28. These extra days occur in each year which is an integer multiple of 4 (except for years evenly divisible by 100, which are not leap years unless evenly divisible by 400)

https://en.wikipedia.org/wiki/Leap_year

But you know, this is an Excel blog and I am an Excel nerd.  That’s why I am going to use Excel to solve this problem.  A simple formula indeed.

=DAY(EOMONTH(DATE(A2,2,1),0))=29
'where A2 is the year input; works for year 1901 onward
Note:
It's an known issue that Excel mistreats the year 1900 as leap year. 😐

How the formula works?

  1. The most inner portion DATE(A2,2,1) returns the first date of February of the year;
  2. Wrapping it with EOMONTH, Excel returns the last date of February of the year;
  3. The outermost DAY() function returns the day portion of the date;
  4. As a result, if it is 29, it’s a leap year. 

As simple as that.  🙂

Indeed, we may use a much shorter formula to achieve the same.

=DAY(DATE(A2,2,29))=29

When we hard-code the day portion as 29, and when there is no 29th in that February, Excel is smart enough to return March 1st instead.  Therefore the outside DAY() function would return 1, which is not equal to 29.

Make sense!?

Want some challenge?

Well, you may think it is too easy to determine if a year is leap year of not.  Really no need to use Excel to do that.  How about if I twist the question a bit…

When is the next February 29th which is a Saturday?

Think a bit before you continue to read this…

Tip: We can do it in a single formula by using Dynamic Array 

The answer is February 29th, 2048.

=MIN(IF(WEEKDAY(EOMONTH(DATE(SEQUENCE(10,1,2024,4),2,1),0),2)=6,
EOMONTH(DATE(SEQUENCE(10,1,2024,4),2,1),0)))
Note: This formula is using Dynamic Array which requires Excel 365

or a shorter equivalent:

=MIN(IF(WEEKDAY(DATE(SEQUENCE(10,1,2024,4),2,29), 2) = 6, 
DATE(SEQUENCE(10,1,2024,4),2,29)))

How does this work?

Dynamic Array is better illustrated by video.  

If you like the video, give it a 👍 and subscribe my channel. 😉

About MF

An Excel nerd who just transition into a role related to data analytics at current company……😊
Recently in love with Power Query and Power BI.😍
Keep learning new Excel and Power BI stuffs and be amazed by all the new discoveries.

This entry was posted in Formula and tagged Date, DAY, Dynamic Arrays, EOMONTH, IF, MIN, SEQUENCE, YEAR. Bookmark the permalink.

Today is February 29th, and that means, this year we have one more day to be awesome. So lets celebrate it in Excel style!

Lets learn 14 different ways to tell if an year is leap year, using Excel Formulas.

Why 14? because, we are awesome like that.

Why 14 methods to just find the year in cell D4 is leap year or not? Because, we all know that by learning different ways to solve a problem, we become smarter, more awesome and have more fun. So lets roll.

Check if an year is leap year or not using Excel

Before we start..,

Since all the 14 methods rely on certain calculations, I have created some names. See below:

Named Ranges and Formulas used to check for leap year

All the names are self-explanatory, except the febDays. So lets take a look at it.

febDays formula

For one of the methods, we need to have all the dates in February in a list. If we want the first of Feb as a date, we can use =DATE(year,2,1). But we want all dates in February. That means, we need to use a list (array) in third parameter of DATE like this:

=DATE(year,2,{1,2,3,4,….,28,29})

Instead of typing all the 28/29 numbers, we can use ROW formula to generate these, like:

=ROW($A$1:$A$29) would give me a numbers from 1 thru 29.

But the problem is in many years Feb has only 28 days, and for rest, it has 29 days. So we modify the second part of row formula and use the last DAY of the Feb, like this:

=ROW($A$1: INDEX($A$1:$A$29,DAY(EOMONTH(feb1st,0))))

To get the last day of a month, we use = DAY(EOMONTH(1st date, 0))

I think you can put the rest of pieces together to solve this puzzle.

Moving on,

#1 – The year has 366 days

This is the obvious one. We use =DATE(year+1,1,1)-jan1st=366 to check if there are 366 days between January 1st of next year and this year.

#2 – February 29th is not March 1st

Because in Excel all dates are numbers, when we use a formula like =DATE(2011,2,29), Excel gives us the date of March 1st, even though we wanted 29th Day of February in 2011.  So a simple leap year check is to see if February 29 is March 1st or not!

=DATE(year,2,29)<>mar1st

#3 – February has 29 days

This is another obvious test. In a leap year, February has 29 days. So=DAY(EOMONTH(feb1st,0))=29 will be true for leap years.

#4 – February 1st and March 1st are not on same day of week

In non leap years, Feb has 28 days (a multiple of 7), so both Feb and March start on same day of week. So, =WEEKDAY(feb1st)<>WEEKDAY(mar1st) will be TRUE for leap years.

#5 – Adding 365 to January 1st does not change year

Well, that is obvious too. =YEAR(jan1st)=YEAR(jan1st+365) is TRUE for leap years.

#6 – 30th Day of February is March 1st

If an year is leap year, 30th day of February [DATE(year,2,30)] is same as March 1st. So, =DATE(year,2,30)=mar1st is TRUE for leap years.

#7 – 0th Day of March is Feb 29th

In real world there is no zeroth day for any month. But in Excel, since all dates are numbers, 0th day refers to last day of previous month. So, =DAY(DATE(year,3,0))=29 will be TRUE in leap years.

#8 – April 1st and January 1st are on same day of week

In leap years, there are 91 days between January 1st and April 1st. And since 91 is a multiple of 7, both April 1st and January 1st start on same day of week. Hence, =WEEKDAY(jan1st)=WEEKDAY(apr1st) will be true for leap years.

#9 – Only 2 more months start on same day of week as January

In leap years, both April and July start on same day of week as January. (Where as in non-leap years, Only October starts on same day of week as Jan).

To test this, we will of course use the SUMPRODUCT. like this:

=SUMPRODUCT(–(WEEKDAY(DATE(year,ROW($A$2:$A$12),1))=WEEKDAY(jan1st)))=2

The portion WEEKDAY(DATE(year,ROW($A$2:$A$12),1)) gives all the first day of weeks from February to December. And then we just check how many of these are same as January 1st’s week day.

#10 – Next year’s February 1st and this year’s February 2nd are NOT  on same day of week

In non-leap years, there are 364 days between February 2nd and next year’s February 1st. Since 364 is a multiple of 7, both of these days are on same day of week. Which is not the case in leap years (as the difference becomes 365). So, =WEEKDAY(feb1st+1)<>WEEKDAY(EDATE(feb1st,12)) will be TRUE for leap years.

#11 – February 1st’s day of week occurs 5 times in that month

This a bit tricky to test, but then again we have SUMPRODUCT. So, =SUMPRODUCT(–(WEEKDAY(febDays)=WEEKDAY(feb1st)))=5 will be TRUE for leap years. The name febDays has all dates in February. I think the rest is easy to understand.

#12 – February starts and ends on same day of week

29 days means both 1st and 29 are on same weekday. So, =WEEKDAY(feb1st)=WEEKDAY(EOMONTH(feb1st,0)) will be true for leap years.

#13 – Spreadsheet day (October 17) and February 1st are on same day of week

Debra, who is a well known Excel blogger & author started the whole spreadsheet day thing. She says, we should celebrate October 17 as spreadsheet day. I love that idea, mainly because, it is just 3 days before my birthday and I like celebrations. And I also like Excel 🙂 So blame her if you do not like this way of testing for leap years.

In leap years, there are 259 days between February 1st and October 17. And since 259 is a multiple of 7 (and 37), we know that they are both on same day of week. So, =WEEKDAY(feb1st)=WEEKDAY(DATE(year,10,17)) is true for leap years.

#14 – Finally, the year is divisible by 4 and if it is divisible by 100, then also by 400

Finally, we are going to test the whole “an year is leap year if it is divisible by 4 and if it is divisible by 100, then it is also divisible by 400” thing. This is a slightly tricky one to test. The formula, =((MOD(year,4)=0)*((MOD(year,100)<>0)+(MOD(year,400)=0))=1) will be TRUE for leap years and false for non-leap years.

Download Leap Year Test Workbook

Click here to download the workbook with all these 14 examples. Play with the formulas, named ranges to understand these techniques.

How do you check it is a leap year?

If you are working and you get paid on first day of a month, then one clear way of knowing leap year is that you get your salary one day later. Other than this, what method would you use to find if an year is leap year. Go ahead and be creative. Share your ideas and formulas using comments. Next leap day is 4 years away. Go

Want to learn how to Dates & Times in Excel – Read these:

If you deal with data that has a lot of date / time stuff, then understanding various Excel features in this area is a must. Read below pages to learn more.

  • 10 tips on working with dates & times in Excel
  • Calculate difference between 2 dates
  • Find thanksgiving day for any year
  • Check if 2 ranges of dates overlap
  • Rolling months in Excel
  • How to convert text to dates
  • Even more on Excel dates & times

Want to master Date & Other Excel Formulas?

If you want to learn how various formulas in this post work and know more about everyday Excel formulas, please consider joining my Excel Formula crash course. It has detailed video tutorials on more than 40 everyday Excel formulas and teaches you all the powerful techniques to become a formula ninja.

Click here to join our Excel Formula Crash Course.

Identify a leap year in Excel: We all know what a leap year is. Every 4 years (almost) we get a February 29th. The ‘almost’ is the key thing. There are some conditions (none of which most of us will see in our lifetimes) where a leap year may get skipped.

Here’s the algorithm for the determination that I found on Wikipedia. You can also read up on the history and such of the leap year there as well if you like.

If the Year is divisible by 400, it IS a leap year.
Otherwise if the year is divisible by 100, it’s NOT a leap year.
If none of the above, and the year is divisible by 4, it IS a leap year.
Otherwise it is just NOT a leap year.

And, here’s the Excel formula to identify whether a given year is a leap year. This formula will return “TRUE” if the year is a leap year and “FALSE” otherwise. Note that “year” below is the value, the cell or the formula that has the year value you want to test.

=IF(MOD(year,400)=0,TRUE,IF(MOD(year,100)=0,FALSE,IF(MOD(year,4)=0,TRUE,FALSE)))

If you have an entire date you’re using instead of just a year, just use the YEAR function to pull the year out of the date value you have in Excel.

=YEAR(yourdatevalue)

With this formula, you can identify a leap year in Excel.

There you go.

Like this post? Please share to your friends:
  • Learning english word pdf
  • Leafs is not a word
  • Latin word for searching
  • Learning english word order sentences
  • Leading spaces in excel