Summary

To check if a date is within the last n months of today's date, you can use a formula based on the AND, TODAY, and EOMONTH functions. In the example shown, we are checking for dates in the last 6 months. The formula in D5, copied down, is:

=AND(B5>EOMONTH(TODAY(),-7),B5<=EOMONTH(TODAY(),-1))

The result is TRUE for any date in the last complete six month period, starting with the previous month. The TODAY function will continue to return the current date, so you can use a formula like this to create reports based on a rolling 6 months, rolling 12 months, etc.

Generic formula

=AND(A1>EOMONTH(TODAY(),-(n+1)),A1<=EOMONTH(TODAY(),-1))

Explanation 

In this example, the goal is to create a formula that will return TRUE if a date is in the last complete 6 month period, starting in the previous month. This means the date must fall between a calculated start date and end date, which requires two logical tests. The formula uses the AND function to require that both logical tests are TRUE. In the example shown, the current date is October 30, 2021. The formula in D5, copied down, is:

=AND(B5>EOMONTH(TODAY(),-7),B5<=EOMONTH(TODAY(),-1))

Excel dates are serial numbers, so you can manipulate them with simple math operations. The TODAY function returns the current date on an on-going basis. Inside the AND function, the first logical test checks to see if the date in B5 is greater than the last day of the month 7 months previous to the current date:

=B5>EOMONTH(TODAY(),-7) // test 1

We use the EOMONTH function to move back in time to the last day of the month 7 months previous the current date, which is calculated with the TODAY function.

The second logical test checks if the date is less than or equal to the last day of the previous month:

B5<=EOMONTH(TODAY(),-1) // test 2

when both results are TRUE, the AND function will return TRUE. If either result is FALSE, the AND function will return FALSE.

Last 12 months

To test for the last 12 months, you can adjust the formula like this:

=AND(B5>EOMONTH(TODAY(),-13),B5<=EOMONTH(TODAY(),-1))

Return custom value

This formula can be combined with the IF function to return any value you want. For example, to return "Last 6" when a date is within 6 months, you can use:

=IF(AND(B5>EOMONTH(TODAY(),-7),B5<=EOMONTH(TODAY(),-1)),"Last 6", "")
Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.