John notes that when cutting and pasting dates between workbooks, they seem to change for no reason. For example, he did this with a workbook with 100 lines, 3 columns of dates, all with 2014 as the year. The pasted data all has 2010 as the year and the days are one digit earlier (17th becomes 16th, etc.).
The giveaway clue in John’s description is that there is a four-year difference between what he copies and what is pasted. The problem is related to the two different “base dates” that Excel can use for calculating dates.
You see, internally Excel maintains dates as a serial number that represents the number of days from a given base date. This date is normally January 1, 1900, so a serial number of 1 is that date (January 1, 1900), 2 is the next day, 3 the following day, etc.
The 1900 base date is the default for Windows-based Excel versions. The other base date is January 1, 1904. Historically this is the base date used in Mac-based Excel versions. (I say “historically” because it isn’t the default in the latest Mac versions. It is unclear exactly when Microsoft changed the default.) Microsoft used this second base-date system because early Macs had an inherent problem in dealing with dates before January 1, 1904-something related to how leap years were dealt with, if I recall correctly.
Under the 1904 base-date system, an internal serial number of 0 is January 1, 1904, 1 is the next day, and 2 is the day after. Note that with the two base-date systems the dates for any given serial number aren’t off by only four years-they are off by four years and a day.
In John’s situation, then, the source workbook has the base date set to the 1904 system. Within that workbook everything is fine, but when you copy the values (remember that you are copying numbers-serieal numbers-from one system to another) and paste them into a workbook that uses the 1900 system, the dates will appear to be off by four years and one day.
There are two possible solutions to the problem. First, you could change the base-date system used in the target worbook. You can do that by following these steps:
- Select the target workbook.
- Display the Excel Options dialog box. (In Excel 2007 click the Office button and then click Excel Options. In Excel 2010 and Excel 2013 display the File tab of the ribbon and then click Options.)
- At the left side of the dialog box click Advanced.
- Scroll down until you see the When Calculating this Workbook section. (See Figure 1.)
- Make sure the Use 1904 Date System check box is selected.
- Click OK.
Figure 1. The advanced options in the Excel Options dialog box.
Now you should be able to copy the dates from the source to the target workbook without any of the problems originally noted. There is a drawback to this, however: Others will still have the same problem if they want to copy anything from the target workbook at a later date.
That brings us to the second possible solution: Adjust the dates after they are pasted into the target workbook. If you look at the underlying serial numbers that Excel uses on a system that uses the 1900 base-date system, you’ll see that the serial number for 1/1/1900 is 1 and the serial number for 1/1/1904 is 1463. Thus, you could paste the dates into the target workbook, subtract 1462 from what you just pasted, and you would end up with properly adjusted dates for the target workbook.