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!
1239 comments
I am tryimg to write a formula that says if the value of a specific cell is a 1 or 2, add 60 days to the date of another cell and place that date in a third cell. but if the value is 3 add 30 days to the date.
So if A1 is a "1 0r 2" take the date in cell A2 and add 60 days to it and place the value in A3. If the value of A1 is a 3, take the date in cell A2 and add 30 days to it and place the value in A3
Hi Mike,
The following nested IF formula works a treat. Just copy it into the cell A3 and check if it returns the result you want:
=IF(OR(A1=1,A1=2), A2+60, IF(A1=3, A2+30,""))
Please make sure the cell A3 has the date format (you can simply copy the format of A2 into A3).
Also, if the cell A1 contains any value other than 1,2 or 3, the formula will return an empty string.
hello swetlana,
i want to highlight my dates three days before into green and into red after date is expired.
thnx in advance.
i want to highlight my dates three days before, how can i do it pls..
Hello, I can't figure out solution to my problem. I have a table with increasing date rows like this:
Date Value
3.11.2014 356540
4.11.2014 356757
4.11.2014 356758
4.11.2014 356762
5.11.2014 356793
6.11.2014 356833
6.11.2014 356838
Is it possible to format that table so the colour of font (or whatever) changes randomly after every change of date. So the rows with same date will be differently highlighted? Thanks in advance, T
Hello:
I've done this before but, I am blanking on the excel formula that I used. I am trying to make an excel spreadsheet to remind me when my staff are in need of training based off days.
example
Green colored cell 12/12/2014 - 9/12/2015 Training is up to date
Yellow colored cell 9/13/2015-12/11/2015 Training is about to expire
Red colored cell 12/12/2015 Training is expired
Please help and Thank you
Very Respectfully,
John
Hi,
I need help with conditional formatting. I have two columns that have dates. e.g. Col A (Entry Date) has date 02 December 2014. Col B (Exit Date) has date 01 December 2014. I want conditional formatting in all the cells in Col B when the date is less than the date in Col A.
Hope it makes sense.
Many thanks,
Sam
Hi Samuel,
Select column B and create a conditional formatting rule using this formula:
=B2<A2
Assuming that row 2 is your first row with data.
Hi I have been using the following formulas however for some reason it highlights the cell above not the cell with the date in it. =AND($A2-TODAY()>0,$A2-TODAY()<=30)
Hi Teri,
Using A2 in the formula implies that row 2 is the 1st row in the range to which the rule applies, please make sure it is really so. If you want to apply the rule starting with row 1, then replace $A2 with $A1 in the formula.
Hello,
How can I get something like this
29/11/2014 00:00
29/11/2014 00:15
29/11/2014 00:30
29/11/2014 00:45
29/11/2014 01:00
And so on, to get after 96 quarters 30/11/2014, and afterwards 01/12/2014?
Thank you in advance!
Hi Siva,
If you need to have time with a 15-minute interval, please do the following:
1. Enter the starting time in cell A1.
2. Type this formula =A1+1/(24*4) into cell A2.
3. Apply the Date format to cell A2 identical to A1.
4. Copy the formula from cell A2 down to the other 94 rows.
Good morning, Svetlana.
I want to duplicate the date from A11 into D11 (A12 into D12, A13 into D13, etc.) without viewing the "1/0/1900" default throughout the spreadsheet. I believe I need to use an If/Then rule, but I have yet to find the correct formula. I used =IF(COUNT(H15)=1,K14-H15,"") for another set of cells, in order to keep the spreadsheet clean, as opposed to viewing default "#VALUE!". Can you help with my date dilemma??
Thank you, in advance!
Hello,
I need help with trying to color coordinate a total based on which day of the week it is. The color needs to change based on the total in the cell.
PLEASE HELP.
thanks!
Hi,
Can someone please let me know if this is possible:
Change the shade/color of the cell based on WHEN the value changed? For example, I have a cell with a drop down menu. Is there anyway I can highlight that cell if the value of that drop down menu hasn't changed in 2 weeks? Note that field in the cell is NOT a date, it is simply a text string.
Thanks!
Hello Shahbaz,
Regrettably, formulas won't help you with your task. Most likely you need a special VBA script.
That's what I figured, thanks.
Hi,
I have several rows filled with dates and I am looking for them to turn yellow when the date is 30 days away and red when the date has lapsed, I seem to be able to do this for a month at a time using the "conditional formatting" button but after the last month has passed it returns to its normal colour, in essence if the date is longer than one month in the past it will not highlight it. could I have a formula that will lengthen this time frame, a year or two would be helpful.
Thanks
I would like to make cell E4 put an X in the cell when cells F4:J4,L4,N4,U4,X4:Y4 have a date put in their cell.
I have a spreadsheet to track training and E4 will show me that the orientation training has been completed should the other cells have a date in them.
I was trying to use an IF function like this, however, the X will not remove if the date is deleted from the cells.
=If(F4:J4,L4,N4,U4,X4:Y4=DATE),"X"," ")
is there a better function to use?
I have also tried to use conditional formatting but am unfamiliar with excel at this level.
Thanks.
Hello Josh,
The shortest formula will be as follows:
=IF( IFERROR(F4*G4*H4*I4*J4*L4*N4*U4*X4*Y4,0) >0, "X","")
For the conditional formatting rule, you can use this formula:
=IFERROR(F4*G4*H4*I4*J4*L4*N4*U4*X4*Y4,0) >0
If you need to check each cell for the date, not simply for the number, I am afraid, the formula would be too long and complex.
Thank you!
Respected sir,
How calculate ( old date + current date )in ms excel.
I need my staff working days calculate daily automatically...
Thanks For advance
Hello AKBER,
Just enter =A2+B2 and apply the Number format to the cell with the result.
Or, you can use the datedif function to count the number of days between the dates:
=datedif(A2,B2,"d")
I am creating a spreadsheet that tracks the date a Patient STARTS a treatment in column F2-F20 and when a Patient STOPS treatment in column G2-G20. What I need is for column G2-G20 to highlight YELLOW when 5 days from the END of treatment and then highlight RED when treatment is done or past due. Example: "Big Bird" starts treatment on 11/15/2014 (entered in Cell F2) and his treatment ends on 11/29/2014 (entered in Cell G2). 5 days before 11/29/2014 Cell G2 should highlight in YELLOW and then on 11/29/2014 and after the Cell should highlight RED. Thank you for your time and help SVETLANA!
I have a date(3-Nov-14) and the value in another column.Next month, i need to pick up the other value.
Could you please help me out with the formula.
Ex:- 03-nov-14 0.366
01-Dec-14 1.36
Thanks
Sirish
I'm going to create a Drop down box in excel, I have set of data (each data have single cell) followed
100 Sales
200 Finance
300 IT
400 Marketing
500 Safety
From this I need to display number only (eg. 100) My request, when I select 100 Sales, cell will display only the number 100, How it is possible to get.
we need to use data validating and conditional formatting. please help me.
Hello Naina,
First off, let me check if my understanding of your task is correct. You have a dropdown list with entries like "100 Sales", in some cell, say A1. And you want to display "100" in another cell, say B1 when "100 Sales" is selected in A1.
If so, just enter the following formula in cell B1, which retrieves the values from A1 until the first space:
=LEFT(A1,FIND(" ",A1))
Thanks for your reply.
Is it possible to display in check box itself. Eg. If I select the check box text "100 Sales" after selecting It should be display "100" only. because this is for printing purpose, I need the numbers only 100, 200, 300 remaining's are reference purpose. otherwise any other option to do this.
Note: I need the numbers only, corresponding word only for reference not for print. I hope you will be understand this.
Thanking you and I'm waiting for your reply!
Hi,
Conditional formatting is much interesting. Can u plz tell me how to sort out the contents present in one column with the contents present in another column. I wants to highlight the contents present in one column only which are different from the contents present in another column. How can I do it?
Waiting for your reply
Regards,
Farhan Khalid
Hello Farhan,
You can create a rule to highlight cells in column A whose values are not the same as in column B with this formula:
=A2<>B2 (assuming that row 2 is your first row with data)
Hi Svetlana,
I'm hoping you can help - you seem to be extremely knowledgeable when it comes to Excel and conditional formatting - Very advanced stuff!
I'm trying to set conditional formatting where the dates in the future so they will turn automatically in a particular colour, more than 2 months green, 2 months and less (amber) and 1 month and less (red).
I can't seem to find it in the formula drop down list for these particular timescales.
Your help will be very much appreciated.
Let me know if you need any more info.
Many thanks again
Vincenzina
Hi Vincenzina,
Regrettably, you cannot create a rule that will work based on months, since the number of days in each month varies.
Alternatively, you can create the rules based on the number of days, like these:
Green (in more than 60 days): =$A2-TODAY()>60
Amber (in 60 to 31 days): =AND($A2-TODAY()>=31, $A2-TODAY()<=60)
Red (in 30 days and less): =AND($A2-TODAY()>=1, $A2-TODAY()<=30)
The current date and past dates won't be colored.
Hi Svetlana,
many thanks for your swift reply.
I have tried to set this formula but it I get an error message saying 'You cannot use relative references in Conditional Formatting criteria for colour scales, data bars and icon sets.
Is there another way I could set the formatting?
Many thanks
Vincenzina
Hi,
Sorry, I managed to figure this out.
Many thanks again!
Vincenzina
Greetings Svetlana,
Your tips are very helpful! I've been trying unsuccessfully to add one of the previously explained formulas to a spreadsheet I have, but no luck.
I'm in need of a formula that I can use with custom colors. I added the =TODAY() to my A1, which gives me today's date every time I open it. Now what I'm trying to do is add 3 different colors to a cell lets say "I4".
From today's date to 90 days = custom color; from 91 to 120 days = custom color; and from 121 to 180 days = custom color all of them within the same cell. Hopefully, I explained myself correctly and any info you can provide will be greatly appreciated. Thanks in advance!
Regards,
Ivan
Hello Ivan,
Try creating the rules for I4 with these formulas:
From today to 90 days (including today): =AND($I4-$A$1>=1, $I4-$A$1< =90) From 91 to 120: =AND($I4-$A$1>=91, $I4-$A$1< =120) From 121 to 180: =AND($I4-$A$1>=121, $I4-$A$1< =180) Instead returning the current date in A1, you can use the TODAY() function directly in the formulas, e.g. From today to 90 days: =AND($I4-TODAY()>=1, $I4-TODAY()< =90)