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
Can someone help me with the formula of picking the highest number settlement on a weekly basis with data that shows multiple amounts settlemend on a daily basis
Hi Sam,
Please give us more details, i.e. what columns you have and what kind of values they contain (data sample would be even more helpful), and will try to help.
I have a spreadsheet with a constant date in D8. Then I have dates calculated based upon that date. I need a formula that counts 10 days from that date, but if it falls on a Saturday or Sunday, then I need Monday's date to appear.
I will also have to work in a holiday table so that if it falls on a holiday, then the next day after the holiday should appear.
Might you help?
Hello Monica,
You can use the following WORKDAY.INTL function:
=WORKDAY.INTL(D8,10,1,A17:A30)
Where A17:A30 is the range with your holiday dates.
You can find more information about the WORKDAY.INTL function in this article:
https://support.office.com/en-US/Article/WORKDAY-INTL-function-0979878c-f476-4dc7-aa81-47111caa9c8a?ui=en-US&rs=en-US&ad=US
In some Excel work sheets i am trying to insert rows, but the insert row option is disabled, but the option is enabled on on some some sheets. whats the probelm?
Most likely these worksheets are protected. To check this, select the sheet, then go to Review > Protect Sheet.
n excel file, when i am trying to move one sheet from one file to another excel file it shown a message as
"A formula sheet you want to move or copy contains the name 'sss', which already exists on the destination worksheet. Do you want to use this version of the name?
* To use the name as defined in the destination sheet, click yes.
* To rename the range referred in the formula or worksheet, click no, and enter a new name in the conflict dialog box."
it ask the same question 20 to 40 times to move a sheet.
and after move the sheet and make changes and save it with another file name and close it. when i open the same file the format totally distrubed just shown text with format.
Sorry, I've never run into a similar issue and therefore cannot advise anything.
In excel file, when i am trying to move one sheet from one file to another excel file it shown a message as
"A formula sheet you want to move or copy contains the name 'sss', which already exists on the destination worksheet. Do you want to use this version of the name?
* To use
Hi,
Thank you for the great assistance you all are providing in this blog.
My question is, I have a column in excel that contains (varying dates in certain cells and blank cells with dates yet to be entered).
I am hoping to create a formula for the entire column that initiates a green fill in the cell that contains a date (30 days after the date range specified). I hope this makes sense.
Your advice would be greatly appreciated.
Kind Regards, Paul
Ma'am,
I am trying to highlight last month, this month, and next month with various colors. For instance, last month would be black filled, with bold white font. This month will be red filled with normal font, and next month would be filled yellow with normal font. I was using the conditional formating of "last month/this month/next month" but it is highlighting things from last and next year. How can i achieve what i am trying to do? My dates show just the month and year. i tried to use the less than "=NOW()+ 30" and equals to "=NOW()". Which is working, however, i do not know how to highlight for the previous month. Any help is appreciated.
-CTR2
Hello John,
Please use the following formulas:
This Month
=month(A2)=month(today())
Next Month
=(month(A2) + 1)=month(today())
Previous Month
=(month(A2) - 1)=month(today())
Hi,
I am trying to create conditional formatting that will show 30 days before training will be required again on an annual basis.
In cell B2 (C2, D2, etc.) I have the date that training took place. The next scheduled training for each training type would be 1 year later. 30 days prior to the 1 year expiry, I would like the date to turn red or the cell fill to be red so it will highlight that re-training is going to be required soon.
Is this possible to do? Thank you for your help.
Employee Name H&S at Work WMHIS
XXXXXX 05/05/14 02/07/14
Hello Jane,
Select all your columns with dates and use the following formula for your conditional formatting rule:
=AND(TODAY()-B2 < 366, TODAY()-B2 > 336)
It works! Thank you very much! I tried other methods shown on other sites with no success. I appreciate your assistance.
Hi Dear,
I want col S(Fee defaulter) to be
1) Red fill
if col E(Ending date) is over and Col Q(remaining Fee is greater than zero).
2)and want light red fill
if Col E(Ending date) is today and Q(remaining Fee is greater than zero)
3)and if both the conditions are not met then want green fill
Thanks in advance
I am also trying to create conditional formatting that will show 30 days before training will be required on an annual basis nut for mine training re-certification isn't a year from the date taken it is June 15th of every year. Is it possible to make a formula for this. My boss does not want expiry dates on spread sheets she just wants dates to turn red a moth before re-certification is required.
Is this even possible? Thank you
Hi, I have a date in A1 and a date in B1. How would I highlight B1 IF its date occurs after (or more recent than) the date in A1? I assume you could use conditional formatting for this, but I'm unsure of the formula. Thanks.
Hi Eunice,
Try creating a conditional formatting rule for cell B1 using this formula =$B1>$A1
If you need to highlight other cells in column B as well, select them all before creating the rule.
Hi,
I've been trying to modify the formula based on your Example 2 but I still failed. Scenario: I want to highlight the cell in red if Status (Column C) is not "Closed" and the Due Date (Column M) is already exceeded. For example, Status is "In Progress" and Due Date is 10-Sep-14 but today is already 25-Sep-14. So, the formula I used was this: =AND($M2:$M500>DATEVALUE(M),$C2:$C500”Closed”) I have also formatted the Column M to be in Date format.
So what went wrong? Hope you could explain. Thank you very much!
Hello Perrin,
In conditional formatting, the formula is written for the top-left cell of the range to which you apply the rule. And Excel adjusts the formula for all other cells correctly, like when you copy the formula to other cells manually. So, most likely you need the following formula:
=AND(TODAY()>$M2, $C2<>"Closed")
Dear Madam,
Please suggest me conditional format as the date and day increase(changes) day by day i need to change the date and the day simulteneously
Hi - I just want to highlight any overdue date. The built in rules pick up yesterday, last week or last month but miss the ones that are 2 weeks ago but still this month! (ie first week of September). Can I amend the built ins so it just picks up all dates over due but ignores cells with other data like names etc?
Hi, I am currently setting up a spreadsheet on when certain places are being worked over the year. I have done conditional formatting for my other topics but I need it to show up late and do not know how to do it.
thanks,
leanne
I have lost the formula I inherited. We have an archive column and when some-one puts a date in this column it shades the whole row grey.
I cannot see where the original formula was nor how to put it back.
I want to addition in years only and no need to change month and days, please help me.
Hi,
I am making a spreadsheet for an apartment complex. I need a whole row to be highlighted red when the date in the corresponding cell in column (F), which marks when the lease ends, is this month of this year. I also would like to do the same thing but highlight the row yellow if the same corresponding cell is next month of this year. I've tried many formulas but I can't seem to get it to work. Could you help me?
Thanks!
Hi,
Just needed some help with conditional formatting. I have two columns both with dates - Column A and B. I want to highlight only the dates in B which occur before the dates in A. (e.g. if B is 4/30/2014 and A is 5/30/2014, then highlight cell B; if B is 5/24/2014 and A is 4/25/2014, do not highlight cell B.) Is that possible?
Hi Lawrence,
You can create a rule for column B with the same formula that is used for comparing numbers:
=$B2<$A2 (assuming that your table has headers and row 2 is the top row with data)
thank you your great!i have been looking everywhere for a solution
Hi,
i was wondering how can i create an excel with specific days of a week that can be repeated for a few months?
I want to create an attendance roster for Tuesdays and Thursdays for a specific date range.
thank you
Hi,
It's not quite clear how you define the Date range. The simplest variant is to write initial Tuesdays and Thursdays in one column or row, and then insert the formulas below.
If your dates are in two columns:
=A2+7
=B2+7
If the dates are in one column:
=A2+7
=A3+7
Format the cells with formulas as dates (press Ctr+1 and select Date from the Categories menu). Then copy the cells with formulas down the column till the result goes out of your Date range.
If u can please help me out of this matter. i want to put a formula that puts the expiry date of 1 year counting 365 days. i.e. if a date 01-01-2014 is written in cell(A) and i wish to have the date exactly after 1 year (365 days)in Red. URGENT PLEASE
Hello Imran,
You can use this formula to get the expiry date:
=DATE(YEAR(A2)+1,MONTH(A2),DAY(A2))
Where A2 is the cell with the original date.
I have the same problem and this formula isn't working. any other suggestions?
Many thanks
Hello Beckie,
I think I did not make myself clear in the previous response, my apologies. The above formula calculates the expiry date based on the value in cell A2. To highlight the expired dates, you can create a conditional formatting rule with this formula:
=TODAY()>$A2+365
Please see the results in this sample worksheet. If you are looking for something different, please clarify.
Hi Svetlana,
I am trying to recreate the above response to highlight the expired dates. I used conditional formatting using your formula =TODAY()>$A2+365 and this indeed worked. However, this only worked on the specific cell "A2." I'm trying to have the entire column checked for dates that are a year old. I tried highlighting the entire column but I was not successful. If you can please assist I would greatly appreciate it. Thanks!
I have a spreadsheet that has a date in column A1 - it is a today date formula.
I then have dates from Jan 2014 - May 2015 shown as each day (roster schedule), I have conditional formatting set up within the spreadsheet for various schedules (O/T/ leave etc) however I am wanting to highlight a single column based on what today's date is so "today" is easier to find when scrolling back and forward organising the schedule.
Any suggestions?
Hi Sarah,
I believe it will be easier for us to suggest a solution if we can see your data structure and the formulas you are currently using. If you can send me your sample workbook at support@ablebits.com along with the result you are trying to achieve, I'll do my best to help.
Hi,
I would like to add some formatting on cerain cells which contain dates. For example, I have a due date on colum A and a scheduled date on colum C. Now if the scheduled date is within 30 days of the due date, the scheduled date colum has to turn red.
I would also like to highlight column n to red if column c is populated with dates and those dates are within 30 days of column A.
Any help would be appreciated.
Thank you,
Hi Denis,
Select column N (from N2 and below) and create a conditional formatting rule using this formula:
=AND(C2<>"",A2-C2<30)
Then select column C and create another rule with the same formula.
hello mijya excel help chaye agar ap help kar sakti ha to repli
I have a slightly different scenario than above. I have a date in column E and a date in column F. I need to highlight the date in column F if it is less than the date in column E.
Thanks for any help you can provide.
Is the above described condition possible to format? I have a similar need to where I would like a cell (L38) to change color when a different cell formatted as =Today() equals 12/1 of any given year. Meaning, I want the L38 cell to highlight yellow each year when today's date = 12/1. Additionally, I would like the highlight to stay active for seven days.