If you are a regular visitor of this blog, you've probably noticed a few articles covering different aspects of Excel conditional formatting. And now we will leverage this knowledge and create spreadsheets that differentiate between weekdays and weekends, highlight public holidays and display a coming deadline or delay. In other words, we are going to apply Excel conditional formatting to dates.
If you have some basic knowledge of Excel formulas, then you are most likely familiar with some of date and time functions such as NOW, TODAY, DATE, WEEKDAY, etc. In this tutorial, we are going to take this functionality a step further to conditionally format Excel dates in the way you want.
Excel conditional formatting for dates (built-in rules)
Microsoft Excel provides 10 options to format selected cells based on the current date.
- To apply the formatting, you simply go to the Home tab > Conditional Formatting > Highlight Cell Rules and select A Date Occurring.
- Select one of the date options from the drop-down list in the left-hand part of the window, ranging from last month to next month.
- Finally, choose one of the pre-defined formats or set up your custom format by choosing different options on the Font, Border and Fill tabs. If the Excel standard palette does not suffice, you can always click the More colors… button.
- Click OK and enjoy the result! : )
However, this fast and straightforward way has two significant limitations - 1) it works for selected cells only and 2) the conditional format is always applied based on the current date.
Excel conditional formatting formulas for dates
If you want to highlight cells or entire rows based on a date in another cell, or create rules for greater time intervals (i.e. more than a month from the current date), you will have to create your own conditional formatting rule based on a formula. Below you will find a few examples of my favorite Excel conditional formats for dates.
How to highlight weekends in Excel
Regrettably, Microsoft Excel does not have a built-in calendar similar to Outlook's. Well, let's see how you can create your own automated calendar with quite little effort.
When designing your Excel calendar, you can use the =DATE(year,month,date) function to display the days of the week. Simply enter the year and the month's number somewhere in your spreadsheet and reference those cells in the formula. Of course, you could type the numbers directly in the formula, but this is not a very efficient approach because you would have to adjust the formula for each month.
The screenshot below demonstrates the DATE function in action. I used the formula =DATE($B$2,$B$1,B$4)
which is copied across row 5.
Tip. If you want to display only the days of the week like you see in the image above, select the cells with the formula (row 5 in our case), right-click and choose Format Cells…> Number > Custom. From the drop-down list under Type, select either dddd or ddd to show full day names or abbreviated names, respectively.
Your Excel calendar is almost done, and you only need to change the color of weekends. Naturally, you are not going to color the cells manually. We'll have Excel format the weekends automatically by creating a conditional formatting rule based on the WEEKDAY formula.
- You start by selecting your Excel calendar where you want to shade the weekends. In our case, it is the range $B$4:$AE$10. Be sure to start the selection with the 1st date column - Colum B in this example.
- On the Home tab, click Conditional Formatting menu > New Rule.
- Create a new conditional formatting rule based on a formula as explained in the above linked guide.
- In the "Format values where this formula is true" box, enter the following WEEKDAY formula that will determine which cells are Saturdays and Sundays:
=WEEKDAY(B$5,2)>5
- Click the Format… button and set up your custom format by switching between the Font, Border and Fill tabs and playing with different formatting options. When done, click the OK button to preview the rule.
Now, let me briefly explain the WEEKDAY(serial_number,[return_type])
formula so that you can quickly adjust it for your own spreadsheets.
- The
serial_number
parameter represents the date you are trying to find. You enter a reference to your first cell with a date, B$5 in our case. - The
[return_type]
parameter determines the week type (square brackets imply it is optional). You enter 2 as the return type for a week starting from Monday (1) through Sunday (7). You can find the full list of available return types here. - Finally, you write >5 to highlight only Saturdays (6) and Sundays (7).
The screenshot below demonstrates the result in Excel 2013 - the weekends are highlighted in the reddish colour.
Tips:
- If you have non-standard weekends in your company, e.g. Fridays and Saturdays, then you would need to tweak the formula so that it starts counting from Sunday (1) and highlight days 6 (Friday) and 7 (Saturday) -
WEEKDAY(B$5,1)>5
. - If you are creating a horizontal (landscape) calendar, use a relative column (without $) and absolute row (with $) in a cell reference because you should lock the reference of the row - in the above example it is row 5, so we entered B$5. But if you are designing a calendar in vertical orientation, you should do the opposite, i.e. use an absolute column and relative row, e.g. $B5 as you can see in the screenshot below:
How to highlight holidays in Excel
To improve your Excel calendar further, you can shade public holidays as well. To do that, you will need to list the holidays you want to highlight in the same or some other spreadsheet.
For example, I've added the following holidays in column A ($A$14:$A$17). Of course, not all of them are real public holidays, but they will do for demonstration purposes : )
Again, you open Conditional Formatting > New Rule. In the case of holidays, you are going to use either MATCH or COUNTIF function:
=COUNTIF($A$14:$A$17,B$5)>0
=MATCH(B$5,$A$14:$A$17,0)
Note. If you have chosen a different color for holidays, you need to move the public holiday rule to the top of the rules list via Conditional Formatting > Manage Rules…
The following image shows the result in Excel 2013:
Conditionally format a cell when a value is changed to a date
It's not a big problem to conditionally format a cell when a date is added to that cell or any other cell in the same row as long as no other value type is allowed. In this case, you could simply use a formula to highlight non-blanks, as described in Excel conditional formulas for blanks and non-blanks. But what if those cells already have some values, e.g. text, and you want to change the background color when text is changed to a date?
The task may sound a bit intricate, but the solution is very simple.
- First off, you need to determine the format code of your date. Here are just a few examples:
- D1: dd-mmm-yy or d-mmm-yy
- D2: dd-mmm or d-mmm
- D3: mmm-yy
- D4: mm/dd/yy or m/d/yy or m/d/yy h:mm
You can find the complete list of date codes in this article.
- Select a column where you want to change the color of cells or the entire table in case you want to highlight rows.
- And now create a conditional formatting rule using a formula similar to this one:
=CELL("format",$A2)="D1"
. In the formula, A is the column with dates and D1 is the date format.If your table contains dates in 2 or more formats, then use the OR operator, e.g.
=OR(cell("format", $A2)="D1", cell("format",$A2)="D2", cell("format", $A2)="D3")
The screenshot below demonstrates the result of such conditional formatting rule for dates.
How to highlight rows based on a certain date in a certain column
Suppose, you have a large Excel spreadsheet that contains two date columns (B and C). You want to highlight every row that has a certain date, say 13-May-14, in column C.
To apply Excel conditional formatting to a certain date, you need to find its numerical value first. As you probably know, Microsoft Excel stores dates as sequential serial numbers, starting from January 1, 1900. So, 1-Jan-1900 is stored as 1, 2-Jan-1900 is stored as 2… and 13-May-14 as 41772.
To find the date's number, right-click the cell, select Format Cells > Number and choose the General format. Write down the number you see and click Cancel because you do not really want to change the date's format.
That was actually the major part of the work and now you only need to create a conditional formatting rule for the entire table with this very simple formula: =$C2=41772
. The formula implies that your table has headers and row 2 is your first row with data.
An alternative way is to use the DATEVALUE formula that converts the date to the number format is which it is stored, e.g. =$C2=DATEVALUE("5/13/2014")
Whichever formula you use, it will have the same effect:
Conditionally format dates in Excel based on the current date
As you probably know Microsoft Excel provides the TODAY()
functions for various calculations based on the current date. Here are just a few examples of how you can use it to conditionally format dates in Excel.
Example 1. Highlight dates equal to, greater than or less than today
To conditionally format cells or entire rows based on today's date, you use the TODAY function as follows:
Equal to today: =$B2=TODAY()
Greater than today: =$B2>TODAY()
Less than today: =$B2<TODAY()
The screenshot below demonstrates the above rules in action. Please note, at the moment of writing TODAY was 12-Jun-2014.
Example 2. Conditionally format dates in Excel based on several conditions
In a similar fashion, you can use the TODAY function in combination with other Excel functions to handle more complex scenarios. For example, you may want your Excel conditional formatting date formula to color the Invoice column when the Delivery Date is equal to or greater than today BUT you want the formatting to disappear when you enter the invoice number.
For this task, you would need an additional column with the following formula (where E is your Delivery column and F the Invoice column):
=IF(E2>=TODAY(),IF(F2="", 1, 0), 0)
If the delivery date is greater than or equal to the current date and there is no number in the Invoice column, the formula returns 1, otherwise it's 0.
After that you create a simple conditional formatting rule for the Invoice column with the formula =$G2=1
where G is your additional column. Of course, you will be able to hide this column later.
Example 3. Highlight upcoming dates and delays
Suppose you have a project schedule in Excel that lists tasks, their start dates and durations. What you want is to have the end date for each task calculated automatically. An additional challenge is that the formula should also consider the weekends. For example, if the starting date is 13-Jun-2014 and the number of days of work (Duration) is 2, the ending date should come as 17-Jun-2014, because 14-Jun and 15-Jun are Saturday and Sunday.
To do this, we will use the WORKDAY.INTL(start_date,days,[weekend],[holidays])
function, more precisely =WORKDAY.INTL(B2,C2,1)
.
In the formula, we enter 1 as the 3rd parameter since it indicates Saturday and Sunday as holidays. You can use another value if your weekends are different, say, Fri and Sat. The full list of the weekend values is available here. Optionally, you can also use the 4th parameter [holidays], which is a set of dates (range of cells) that should be excluded from the working day calendar.
And finally, you may want to highlight rows depending on how far away the deadline is. For example, the conditional formatting rules based on the following 2 formulas highlight upcoming and recent end dates, respectively:
=AND($D2-TODAY()>=0,$D2-TODAY()<=7)
- highlight all rows where the End Date (column D) is within the next 7 days. This formula is really handy when it comes to tracking upcoming expiration dates or payments.=AND(TODAY()-$D2>=0,TODAY()-$D2<=7)
- highlight all rows where the End Date (column D) is within the last 7 days. You can use this formula to track the latest overdue payments and other delays.
Here are a few more formula examples that can be applied to the table above:
=$D2<TODAY()
- highlights all passed dates (i.e. dates less than the current date). Can be used to format expired subscriptions, overdue payments etc.
=$D2>TODAY()
- highlights all future dates (i.e. dates greater than the current date). You can use it to highlight upcoming events.
Of course, there can be infinite variations of the above formulas, depending on your particular task. For instance:
=$D2-TODAY()>=6
- highlights dates that occur in 6 or more days.
=$D2=TODAY()-14
- highlights dates occurring exactly 2 weeks ago.
How to highlight dates within a date range
If you have a long list of dates in your worksheet, you may also want to highlight the cells or rows that fall within a certain date range, i.e. highlight all dates that are between two given dates.
You can fulfil this task using the TODAY() function again. You will just have to construct a little bit more elaborate formulas as demonstrated in the examples below.
Formulas to highlight past dates
- More than 30 days ago:
=TODAY()-$A2>30
- From 30 to 15 days ago, inclusive:
=AND(TODAY()-$A2>=15, TODAY()-$A2<=30)
- Less than 15 days ago:
=AND(TODAY()-$A2>=1, TODAY()-$A2<15)
The current date and any future dates are not colored.
Formulas to highlight future dates
- Will occur in more than 30 days from now:
=$A2-TODAY()>30
- In 30 to 15 days, inclusive:
=AND($A2-TODAY()>=15, $A2-TODAY()<=30)
- In less than 15 days:
=AND($A2-TODAY()>=1, $A2-TODAY()<15)
The current date and any past dates are not colored.
How to shade gaps and time intervals
In this last example, we are going to utilize yet another Excel date function - DATEDIF(start_date, end_date, interval)
. This function calculates the difference between two dates based on the specified interval. It differs from all other functions we've discussed in this tutorial in the way that it lets you ignore months or years and calculate the difference only between days or months, whichever you choose.
Don't see how this could work for you? Think about it in another way… Suppose you have a list of birthdays of your family members and friends. Would you like to know how many days there are until their next birthday? Moreover, how many days exactly are left until your wedding anniversary and other events you wouldn't want to miss? Easily!
The formula you need is this (where A is your Date column):
=DATEDIF(TODAY(), DATE((YEAR(TODAY())+1), MONTH($A2), DAY($A2)), "yd")
The "yd" interval type at the end of the formula is used to ignore years and calculate the difference between the days only. For the full list of available interval types, look here.
Tip. If you happen to forget or misplace that complex formula, you can use this simple one instead: =365-DATEDIF($A2,TODAY(),"yd")
. It produces exactly the same results, just remember to replace 365 with 366 in leap years : )
And now let's create an Excel conditional formatting rule to shade different gaps in different colors. In this case, it makes more sense to utilize Excel Color Scales rather than create a separate rule for each period.
The screenshot below demonstrates the result in Excel - a gradient 3-color scale with tints from green to red through yellow.
"Days Until Next Birthday" Excel Web App
We have created this Excel Web App to show you the above formula in action. Just enter your events in 1st column and change the corresponding dates in the 2nd column to experiment with the result.
If you are curious to know how to create such interactive Excel spreadsheets, check out this article on how to make web-based Excel spreadsheets.
Hopefully, at least one of the Excel conditional formats for dates discussed in this article has proven useful to you. If you are looking for a solution to some different task, you are most welcome to post a comment. Thank you for reading!
1237 comments
I've tried running the "How to highlight dates within a date range" formatting but I'm finding that the last date in the range is coming up in the wrong colour. So for instance I want under 10 days listed red, 11-15 in orange and anything over 15 days green, however I'm finding that the formula works except for the last one in the list. For example I'll have 5 27.08.2021 then 4 31.08.2021. The first four of the 27.08.2021 change to the right colour but the 5th one is getting assigned the colour of the 31.08.2021. Hope that makes sense!
Any suggestions as to what I am doing wrong?
Thank you Alexander for ALL of your help! I do have one more question. If I used the "today" format, and I want it to calculate 1 year AND 1 month from then, would I use 395 instead of 365 at the end of my formula?
I’m building a gantt chart and I’m trying to add an icon in conditional formatting to represent my milestones but I have not had any luck is there a formula that I could use to get it to work??
Morning,
I am trying to create a project management calendar. We have start and end dates for certain tasks (8/16/21 start date and 9/17/ 21 end date). Task description is listed in column A, start date in Columb B, and then end date in column C (all listed in row 3 and under, depending on the amount of task). In D-AA we have a "Calendar" set within row 2, of every Monday for the next year.
The goal is to conditionally format the cells in column D-AA and under row 2 (so row 3 and under) to highlight a color (i.e red) during the date range. So every task will have a different start and end date aka the colors will change in every cell between D-AA
Hello!
Have you tried the ways described in this blog post? If they don’t work for you, then please describe your task in detail, I’ll try to suggest a solution.
Hello,
I need to highlight cells based on a date within the cell NOT todays date. I want a cell to highlight based on 30 days from the day in the cells within a column.
Example: I want to have each manager over their department know when their employees annual renewals are due. I would like it to be based on JUST the month and the day NOT the YEAR since that year is listed by their original hire date. My plan is to take the year out listing only the month and day so that if it is 30 days past that date it will turn red
Hello!
Use the formulas from the paragraph - How to highlight dates within a date range.
Use the date cell address instead of the TODAY function.
If this is not what you wanted, please describe the problem in more detail.
Alexander,
Thank you for responding. This is not what I need as I explained previously, I am looking for dates that are 30 days away from the date that is in a cell. That is why I explained that I cannot use the "today" function. I do not have 2 dates listed so I cannot use a "date range" function, I don't believe.
Example:
Column A Employee #
Column B Employee Name
Column C Years Employed
Column D Date of Hire MONTH AND DAY ONLY
Column E Job Code
I am looking for Column D to change a color when it is 30 days past the date entered in that column.
Also I want the format to look and ONLY a MONTH and a DAY I do not want the year to be part of this as I believe it will not work since our employees tenure ranges from 1 year to 40+.
I am VERY green when it comes to Excel so could you give as much detail as possible? Please and thank you!
Hi!
How do you want to define 30 days if you only have a month and a year? If the date is only a month and a day, then it is written not as a date, but as text.
So, there has to be a year attached?
If so, I will use the current year but, I want the 30 days to be 30 days PAST the day that is in each cell located in Column D.
For instance if D says 8/21/21Then by 9/14/21 I would like that cell to be red
Hello!
If the date is written in column D, then you can use the recommendations from this article above. In the formatting condition, instead of the TODAY function, use a cell with a date
=F1-D1>30
I hope my advice will help you solve your task.
Alexander,
I'm sorry but, would you give me step by step instructions on how to insert this formula? As I explained, I am very green with spreadsheets. What is f1? Is that assuming I am using another column? Also, is this a conditional formatting formula? Does it go in a specific box?
Hi!
In the formula
=$F$1-D1>30
F1- the date from which you will compare all cells in column D.
How to create and use a conditional formatting formula is detailed in this article above.
Hi,
I would like to simply highlight any cell with a date of today or older - older than a month too
Hello!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question.
Looking to highlight months 1, 2 and 3 months out, so ex I would like a cell to highlight red if its says JUL and it is currently JUL and highlight Yellow If the cell says JUL and it is JUN, so highlighting cur month as well as the 2 months prior to end of current month, the formula set up now is broken and I can not figure it out
=MONTH(EOMONTH(TODAY(),3))
=MONTH(EOMONTH(TODAY(),2))
=MONTH(EOMONTH(TODAY(),1))
I am getting 0 highlights and I am unable to get it working
Hello!
If I understand your task correctly, the following conditional formatting formula should work for you:
=MONTH(A2) <= MONTH(EOMONTH(TODAY(),1))
I hope it’ll be helpful.
Hi I'm trying to show a RAG to a cell if a date scheduled was achieved or not. I understand how to add a conditional format however I have to make a new rule for each cell in the column. For example in column A the dates are different in each row in column B a formula is used to show the date due and then in column c the actual date completed is inserted. I would like to highlight if this matches the due date using RAG and can only achieve this if I add a new rule to each cell in each row in column C. I'm looking for a way to copy the rule into each of the cells that will auto generate column C to look across the row at cells, c1 to look at b1, c2 to look at b2 and so on.. pls help!
Hi,
I have two columns. One contains starting date and another contains exact 6 months from that starting date(Note: few dates are in the past). Now I want to highlight the dates which are greater than today. How to do that?
Hi!
Pay attention to the following paragraph of the article above: Conditionally format dates based on the current date
Hi. Thanks for these examples. I am trying to highlight a cell based on two criteria:
1. If the date is within 15 days of today
2. If the cell in another text is "TBD"
This is what I have but it isn't working:
=IF(W2=TODAY()<15,IF(K2="TBD",1,0),0)
Am I missing something or do I have something written incorrectly?
Thank you
Actually, I think I figured it out:
=IF(W2-TODAY()<15,IF(K2="TBD",1,0),0)
I just changed the "=" to "-".
Thanks
Hello!
I’m not sure I got you right since the description you provided is not entirely clear. However, it seems to me that the formula below will work for you:
=IF(AND((W2-TODAY())<15,K2="TBD"),TRUE,FALSE)
Please have a look at this article — Excel IF statement with multiple AND/OR conditions
hi is there a way to create a formula to automatically highlight cells when the figures in a certain cells are unchanged after lets say 6 months. for instance if you keep records manually of 20 bank customer's balances and you want the cells of inactive customers (for 6months) with an unchanged balance to change colour automatically. How can this be achieved?
Hello!
If your table contains data, for example, at the beginning of each month, then it is very easy to determine that 6 digits are the same.
I have used the conditional format cells based off of date using colors Red for overdue dates, Yellow for coming due in 30 days and Green for current. Now that I have all that, Column A is a list of names. I am wanting to know if there is a conditional formula to change the name color to green is all cells in their row are green, yellow if there is yellow cells in their row and red if there are red cells in their row. Is there a way to do this? Thanks for your time.
Hello!
Please have a look at this article — How to create a conditional formatting rule with a formula.
Use in the formula the conditions by which you changed the color of the cells in the row.
I cannot give you a more accurate advice, since I cannot see your data.
H, Trying to set up a conditional format for a column of dates, (expiry dates that may need updating). I wish to highlight all dates prior to todays date. ie. each day if there is a date 'out of date' it will turn red.
Thought I had set it up to do this as above instructions however it is changing other dates to red also?
Advice appreciated.
Hello!
Pay attention to the following paragraph of the article above — Conditionally format dates based on the current date
Hello,
I want to color only fridays..
=(WEEKDAY($A8,15)>1)-1
Hello!
The WEEKDAY function will help you determine the day of the week. Simply, use this formula in your conditional formatting rule:
=WEEKDAY(A1,2)=5
I hope it’ll be helpful.
Hello, I am trying to change the color of a cell when it is coming due, overdue and then when it is current. The date is coming due (orange) the first of every month. The date becomes overdue (red) when it is the 16th of each month if not completed. The date, or cell, is current again (green) once it's completed the first of the next month. Not every cell will be overdue of course, only if a current date is not entered by the 15th of each month. Any help would be greatly appreciated!
Hi!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question. For each condition, write down a separate formatting rule as described in the article above.
I recommend reading this guide: Apply several rules to one cell.
I hope it’ll be helpful.
Hello,
I am trying to figure out if this date (column P) is within one year of that date (column C):
Renew date: 7/31/21
RX date: 5/31/21
is the RX date within 365 days of the renew date? If not within one year, can it be highlighted in red so I know to stop. I cannot us an RX that is move than one year old (I cannot use an RX from 7/29/20 form example)
is this possible ?
Hello!
Please check the formula below, it should work for you:
=DATEDIF(A1, B1, "d")>365
Use this formula in conditional formatting.
I recommend reading this guide: Calculating date difference
Hello,
I am trying to highlight rows where the Implementation Date in Excel column P is past 7/31/2021. I used the formula '=$P2>=DATE(2021,7,31)'. I also converted the Date to its numerical value in a column at the end of the spreadsheet. Conditional Formatting in both cases highlights incorrect rows (before 7/31) and skips rows that meet this specific criteria. Both ways highlights the same, incorrect rows. Do you know why that happens? Please advise...
Hello!
Unfortunately, without seeing your data it is difficult to give you any advice. If your date is written as text, then the formula will always return TRUE. Check this.
Hiya! I am a teacher trying to organize whether a student is under the age of 9 years as of "TODAY" so that I can use the checkbox TRUE or FALSE as they'll need testing or not. For example, if Student A is under the age of 9 years old (even by a day) as of today, then checkbox is TRUE. (They will need testing). How can I writ eout this formula prettyt please?
Hi!
Please have a look at this article — How to calculate age in Excel from birthday
I hope it’ll be helpful.
in an excel cell, I set the expired date is 4/30/2022. when the date 4/30/2022 comes, I want the in warranty credit value of another cell to set to zero permanently. What formula could I use? please help?
Hi!
In this cell, you can use the formula with the IF function with date. Read this article.
If you need to change the content on the cell that has some value in it, you’ll need to use a VBA macro.
Hello,
Hi, I'm trying build a recurring maintenance schedule for list of equipment per recommended maintenance matrix within 12 months. maintenance frequency are every 2 months, every 6 months, every 12 months. I would like a conditional formatting formula to color code cells per predefined maintenance duration in days per maintenance frequency stated above within a 12 months period. So far I have column in days that span over 12 months, rows - predefined maintenance duration/maintenance frequency/equipment and task Start and Finish dates per equipment. thanks for your help in advance
Ablebits.com Team - Any luck with my help request?
Hi!
According to your description it is difficult for me to understand your data.
To add 2 months to a date, you can use the formula
=DATE(YEAR(A2), MONTH(A2) + 2, DAY(A2))
Conditional date formatting is described earlier in this article.
Give an example of the source data and the expected result.
It’ll help me understand it better and find a solution for you.
thanks for the acknowledgement. See below example as requested. I tried simplifying with just one Equipment.
Source Data: Equipment A - Task Duration (Cell C5 - Start date Aug 2 2021, D5 -End date, Dec 31 2023), Cell E5 (Maintenance Frequency – Every 60 days), Cell F5 (maintenance duration – 4 days), Cell G5 (# of personnel to perform the maintenance – 3).
Expected Result: Under a list of dates that span from Aug 2, 2001 to Dec 31 2023 (a cell representing a day) – Cell H4 to xx4, create a dynamic cells using conditional formatting to show recurring maintenance schedule for Equipment A – every 60 days perform a 4 days maintenance using C5 as start date, next maintenance will be (C5+F5) +60 days. Last day of each maintenance frequency should initiate the 60 days counter for the next maintenance cycle. This sequence should end at day = D5. Only maintenance duration should be color coded and number of personnel (G5) to be inserted each color coded cell.
Thanks for you assistance in advance.
Hello!
I think for your task it is best to use not conditional formatting but a Gantt chart.