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
This was of great helps thanks!
Hi,
I am looking for a formatting that would highlight cells that are past todays date, but less than 60 days past the expiry then a different colour if over 6 days past expiry.
if the date was over 60 days ago =red
if the date expired but is less than 60 days
the cells have the expiry date in already so if it's past todays date.
thanks
Hello!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question. If you have a specific question about the operation of a function or formula, I will try to answer it.
Amazing - just exactly the formulas I was looking for. I know I should keep a book with all these in, but google just seems far easier!
Hello,
I hope u can help me please
i looking for a formule to highlight a cell (with a date) 14 days before before that specific date
example:
date in that specific cell is 14/02/2021 i would like it to highlight 14days before that specific date without regard to today's date (if that is possible :)
thank you
Hello!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question.
Read following paragraph — How to highlight dates within a date range
hello!
I have a column of dates (Column A), and a column next to it (Column B) which return the quarter, i'm using the formula: ROUNDUP(MONTH(A2)/3,0), the value given is always 1, if i did not fill anything in column A
and whenever i fill a date in "Col A", "Col B" will return the correct quarter number
i need column "B" to be seen empty, or all grey without anything showing, and when i enter the date, and i get a quarter value, the color changes and the font color changes to be seen by the user
I hope i was clear enough
thank you!!
Hello!
If I understand your task correctly, the following formula should work for you:
=IF(A2<>"",ROUNDUP(MONTH(A2)/3,0),"")
Create conditional formatting: Format only cells that contain — No Blanks
I hope I answered your question.
This site is great, but I think I don't see the formatting I'm looking to do.
In my Personnel Tracker, I track when personnel transfer away and the due dates for products that are needed for them to transfer. I'd like for A) the product column to give me the date 45 days before the transfer date, and B) to turn red when the current date is inside that window (the product is late). Example:
F3 - date of transfer - 22-Feb-2021
H3 - Eval due date - "45 days prior to F3"
As of todays date (4-Feb-2021) I'd like that column to have automatically turned red.
Please advise as to how you think i could format this. Thank you.
Hello!
If I understand your task correctly, formula in H3
=F3-45
Formula for conditional formatting
=H3 < today()
I hope I answered your question.
Thank you for your response. Both formulas work for H3; the issue now is that I need to conditionally format all of the cells in column H so they highlight according to their corresponding date entered in column F just like H3 does.
Please advise as to how to get the cells in column H to turn red based on their corresponding cell in column F.
Hello!
Here is the article that may be helpful to you: https://www.ablebits.com/office-addins-blog/relative-absolute-cell-references-excel-conditional-formatting/#absolute-column-relative-row.
I hope this will help
That ended up confusing me even more... HAHA! I ended up creating a TODAY date cell and running a "Format only cells with less than or equal to that cell. Works great. I have learned a lot though; thank you for your assistance!
In Excel, I need a conditional formatting formula to calculate 5, 10, 15 etc. year anniversaries for quarterly recognition after anniv date has passed. Ex: Start Date 2/1/2016 will be recognized in the 2nd quarter newsletter has having reached their 5 yr anniv. I want the date to format color coded during their "anniv quarter" & then return to black when quarter has ended until they reach the 10 yr anniv & the same thing happens. I can get them to change color for the correct anniversary milestone but can't figure out how to turn them to black after the quarter has ended until they reach the next anniv. I'm using the formula =TODAY()-C1)/365>=5 and it's working but the date stays formatted to the assigned color forever until the next anniversary date. I need it to revert back to black at the end of the anniv quarter. Any advice?
Hello!
Create a second rule that will set the cell to normal format. Place it below the first one as described in this article — Apply several conditional formatting rules to one cell.
The second rule will override the first rule.
I hope I answered your question. If something is still unclear, please feel free to ask.
Y'all have a great website! Very informative. Thanks for the link to the article. I think I've read about 20 of them, but can't seem to find the formula I need.
I have the 5 yr increment anniversary dates color coded & they all work. But I only want them to stay color coded for the quarter that they are in. At the end of the quarter, I need them to go back to black (default) until their next anniv date. When I added a second rule, using the same formula, that set the cell back to normal format and placed it below the first one as you suggested, it overwrote all of the other anniversary date formulas that follow it & turned them to black as well. Even clicking the "Stop if True" box did not help.
Is there a different formula to use for the "return to default" rule? Is there a formula that will turn off the formatting at the end of the quarter? Thanks, aimee
Hello!
Please try the following formula:
=AND((TODAY()-C1)/365>=5, INT((MONTH(C1)+2)/3)=INT((MONTH(TODAY())+2)/3))
I hope this will help
Hi team,
How to highlight a date in a cell if it past more than 15 days.For example I want to highlight a cell with date value 01/15/2020.I want to highlight this cell once its past 15 days?
Hello!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question.
Read following paragraph — How to highlight dates within a date range
When I am trying to highlight a row on yesterday date using conditional formatting (Formula: "= $A5=Today()-1") in pivot table it Highlights the row of day before yesterday and when applying the same conditional formatting on simple table it is highlighting right row "yesterday date". I don't know why.
If anybody knows the solution, please respond.
I would like to create a formula that lets me turn a cell red for a date is within 30 days of today. I am making a spreadsheet with different parts that have different expiration dates and I need to have them turn red when they have only 30 days until they expire, yellow when they have 60 days to expire and green when they have more than 60 days to expire. How would I do that?
Hello!
Pay attention to the following paragraph of the article above — How to highlight dates within a date range.
I have been trying to create a formula based on dates entered in row H (work allocated) I would like the cell "Technician ""B" to change if cell remains blank (no name entered) 14 days AFTER the date that has been entered. cells have been formatted to represent dates displayed in "H"
g for
secondly I want to change the color of "c" job paid if it exceeds 25 days after date entered into H
ive been strugglin some time the formulas seem to count based on current date and not the work allocated date
thans for any help you can provide, I reference your page frequently
Hi I am looking to conditional format my plan in Excel (I know its probably easier in MS project but where is the fun in that)... I have start and end dates in rows and the week in columns. I am looking to conditionally fill in the week based on the start and end dates in the row.
Is this possible in Excel?
thank you
Sandeep.
never mind..figured it out
I have a spreadsheet of when a patient was seen in the clinic (column G). It also contains a column with their next due date for their appt(Column I) and another for their actual scheduled appt date(column Q)(some are blank in the column)
I need Column I and Q to highlight in Red if they are MORE than 6 months from column G.
Since its not based on TODAys dates I'm not sure how to format it.
Hello!
Follow the guidelines in this section above. Instead of TODAY, use a cell reference with the date you want.
I hope this will help, otherwise please do not hesitate to contact me anytime.
I want to copy text from particular cell based on date
Say cell A1 represents today Monday 23.11.2020 then in Cell B1 I want text 123690 and so on..
Like Below table
24/08/20 Mon 123470
25/08/20 Tue 123458
26/08/20 Wed 234569
27/08/20 Thu 345670
28/08/20 Fri 145678
29/08/20 Sat 256789
31/08/20 Mon 147890
01/09/20 Tue 147890
02/09/20 wed 125890
03/09/20 Thu 123690
04/09/20 Fri 123470
05/09/20 Sat 123458
07/09/20 Mon 345670
08/09/20 Tue 145678
09/09/20 wed 256789
10/09/20 Thu 367890
11/09/20 Fri 147890
12/09/20 Sat 125890
Hello!
To select text based on date, I recommend using the VLOOKUP function. Read more in this article.
I hope my advice will help you solve your task.
On conditional formatting want to set a rule to highlight cells with dates after a cetain date. Example highlight cells with months, in different color per month, if possible, afer 30 June 2019. If not, then highlight dates after 30 June 2019. Thanks. Look forward to your swift response.
Hello!
I hope you have studied the recommendations in the tutorial above. It contains answers to your question. Use the DATE function to compare the value in a cell with the desired date — DATE(2019,6,30)
I hope it’ll be helpful.
Hello Svetlana
In the excel table I have a column that contains many different numbers from 0 to 3000 or more
I want to format the numbers. Each number takes the color of a line and the borders of a cell in a color that differs from the other number and is equal to the same format if the number is repeated
Thank you!
Madam,
daily weekly monthly activity tracking
I want to know how to create daily weekly monthly activity details which has to show going expire date and yet to complete within these days(Ex: 2days it has to complete).
Please am searching answer for this past 3days am not getting answer in the google
Hello!
Please describe your problem in more detail. Unfortunately, without seeing your data it is difficult to give you any advice. Please provide me with an example of the source data and the expected result.
In a column I have incremental dates which is incremented by 3 days from it's previous row. These 3 days are days required to complete any particular task which is independent with each other. At a time I can perform only one task irrespective of sequence. Lets assume the dates are as follows to complete the tasks:
01-Jan
04-Jan
07-Jan
10-Jan
13-Jan
16-Jan
19-Jan
22-Jan
Above dates can be obtained by simply adding +3 to previous cell and drag the formula downwards by this way I can get the date when my work will be finished.
Now lets consider the activity in row 2 & 5 are complete, the moment I put Done in any cell next cell should automatically updated with previous date + 3 days and accordingly all dates in all column. What will be the formula to auto calculate end date to finish my work in each cell. For example
01-Jan
Done
04-Jan
07-Jan
Done
10-Jan
13-Jan
16-Jan
Pls. suggest
In a column I have incremental dates which is incremented by 3 days from it's previous row. These 3 days are days required to complete the task which is independent. Lets assume the dates are as follows:
01-Jan
04-Jan
07-Jan
10-Jan
13-Jan
16-Jan
19-Jan
22-Jan
Above dates can be obtained by simply adding +3 to previous cell and drag the formula downwards by this way I can get the date when my work will be finished.
Now lets consider the activity in row 2 is complete, what will be the formula to calculate end date to finish my work. For example
01-Jan
Done
07-Jan
10-Jan
13-Jan
16-Jan
19-Jan
Pls. suggest
Pls. ignore this question, I have send new question for easy understanding.
Hello!
I don't quite understand your explanations. But you can use the ISNUMBER function to determine if a cell contains a date.
=IF(ISNUMBER(A1),A1+3,"")
Hope this is what you need.
Hi
I have a 4 week school timetable (Week A1, A2, B1 and B2) on one tab that links into another tab with the whole staff timetable on it. When the staff initials are added into a cell it automatically shows their timetable. What I am trying to do is highlight in green today's lessons in that 4 week timetable structure so teachers can see which lessons they have each day.
To help me with this I have a third tab with the dates of each day in each week. So, today, for example, is Wednesday of Week B1. How do I conditionally format the relevant timetable on the '4 Week Timetables' tab to automatically move the colour coding to the respective part of the timetable?
My logic goes something like this:
When today's date equals what is on the 'Whole Term Dates' tab, cells d2, d7, d11 (etc.), then make the '4 Week Timetables' tab, cells h8:j8, green.
I hope this makes sense and that you are able to help. Thanks very much for any time you spend in this. I really appreciate it.
Regards
Simon