
Tips.Net > ExcelTips Home > Data Entry > Modifying Default Year for Dates
Summary: When entering dates into a worksheet, you may want the dates to default to last year instead of this year. Here’s a way you can accomplish this type of data input. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)
When entering dates into a worksheet, Excel provides quite a bit of latitude for how you enter them. One area where latitude is granted is when it comes to including a year. If you include a year (such as 3/2/08), that is great. If you don't include a year (such as 3/2), then Excel helpfully adds the current year to what you are entering.
Most of the time this isn't a problem. It can be a problem, however, for those entering dates that "wrap around" to last year. For instance, many people enter dates for the previous month or two in their worksheets. In most months this isn't a problem, because the past month or two is in the same year as the current month. It can be a problem during January and February, however, when you may be entering dates from November and December of the previous year.
One solution is to always enter the year when entering a date. It is unarguably faster to leave the year off during data entry and allow Excel to add it to your entry. Thus, it would be nice to come up with a way to enter dates during the first two months of the year and have the previous year's year appended to them.
One way to handle this is to change the system date on your computer. Within Windows, decrement the system date by one year. Then, all dates that you enter will change to last year. This has ramifications in other programs, however, unless you remember to change the system date back. It also can mess up your data entry if, during the latter part of January and early February, you start entering dates from this year, and Excel automatically appends last year's year to them.
Doing anything more complex necessarily involves the use of a macro. Consider the following example, which should be added to the code window for a worksheet:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Target.Column <> 1 Then Exit Sub
If DateValue(Target) > Date Then
Application.EnableEvents = False
Target = DateAdd("yyyy", -1, Target)
Application.EnableEvents = True
End If
End Sub
This macro automatically runs whenever there is a change in the worksheet. If the change being made is to a single cell in column A, and what is being entered is a date that is greater than today's date, then a year is subtracted from what is being entered.
This works great, provided you are routinely entering dates that are within either the last year or the months so far in the current year. If you specifically add a far-future date (such as entering 6/11/09 on 3/2/08), then the year is still incremented by one. The macro could, of course, be modified to check to see if the date being entered is in the last two months of a year, and that the date is actually being entered during the first two months of a year, before doing the decrement of the year.
Tip #3360 applies to Microsoft Excel versions: 97 2000 2002 2003 2007
Save Time! You can have this tip (and several hundred just like it) in the ExcelTips annual archives. Imagine having over 400 tips available at your fingertips, in each annual volume.
You can put times into a worksheet, but then what? Need to do calculations with times? How about working with elapsed time? Don't be confused; learn how easy it can be. (more information...)
Ask an Excel Question
Make a Comment
ExcelTips FAQ
ExcelTips Premium
Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips
Advertise on the
ExcelTips Site