#1   Report Post  
BernieH
 
Posts: n/a
Default date formatting

I have a *.CSV file with a column of dates in various formats, such as -

1/01/1900
1/07/1901
1/06/1903
1880
1901
1904
1911
1911
1913
1/05/2004
Winter 2004

I need to get these dates into YYYYMMDD or YYYY format (depending on how
much info is available, e.g. 1911 is OK left as 1911). Formatting the cells
as custom YYYYMMDD however doesn't work, as ?pre-1900 dates get converted
wrongly.

There are ~20K lines in the file, so any solution has to be pretty much
automatic.

Your help would be very much appreciated!

TIA

bernieh



  #2   Report Post  
JE McGimpsey
 
Posts: n/a
Default

One way, using a macro. It will place the new values in the column to
the right of the originals:

Public Sub ConvertDates()
Dim rCell As Range
For Each rCell In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With rCell
If IsDate(.Value) Then
.Offset(0, 1).Value = Format(.Value, "yyyymmdd")
Else
.Offset(0, 1).Value = Right(.Text, 4)
End If
End With
Next rCell
End Sub

Note that this is based on the forms in your data.

If you have something like

01/30

meaning January of 1930, this macro will give an incorrect answer.

In article ,
"BernieH" wrote:

I have a *.CSV file with a column of dates in various formats, such as -

1/01/1900
1/07/1901
1/06/1903
1880
1901
1904
1911
1911
1913
1/05/2004
Winter 2004

I need to get these dates into YYYYMMDD or YYYY format (depending on how
much info is available, e.g. 1911 is OK left as 1911). Formatting the cells
as custom YYYYMMDD however doesn't work, as ?pre-1900 dates get converted
wrongly.

There are ~20K lines in the file, so any solution has to be pretty much
automatic.

Your help would be very much appreciated!

TIA

bernieh

  #3   Report Post  
Ron Rosenfeld
 
Posts: n/a
Default

On Mon, 30 May 2005 06:11:18 -0600, JE McGimpsey wrote:

One way, using a macro. It will place the new values in the column to
the right of the originals:

Public Sub ConvertDates()
Dim rCell As Range
For Each rCell In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With rCell
If IsDate(.Value) Then
.Offset(0, 1).Value = Format(.Value, "yyyymmdd")
Else
.Offset(0, 1).Value = Right(.Text, 4)
End If
End With
Next rCell
End Sub

Note that this is based on the forms in your data.

If you have something like

01/30

meaning January of 1930, this macro will give an incorrect answer.



Interesting output from your macro.

If the input date is between 1/1/1900-2/28/1900, the output from your macro
will be off by one date.

I imagine this has to do with the infamous year 1900 leap year issue.

In VBA, Day 1 is 12/31/1899 and the FORMAT function acts accordingly.

======================
1/1/1900 18991231
2/28/1900 19000227
2/29/1900 19000228
3/1/1900 19000301
1901 1901
1904 1904
1911 1911
1911 1911
1913 1913
1/5/2004 20040105
Winter 2004 2004
===========================

However, the worksheet function TEXT seems to perform the expected conversion.

Perhaps there is another fix?

=========================
Public Sub ConvertDates()
Dim rCell As Range
For Each rCell In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With rCell
If IsDate(.Value) Then
.Offset(0, 1).Value =
Application.WorksheetFunction.Text(.Value, "yyyymmdd")
Else
.Offset(0, 1).Value = Right(.Text, 4)
End If
End With
Next rCell
End Sub
========================



--ron
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Incorrect Date formatting dionne_w Excel Discussion (Misc queries) 2 February 22nd 05 09:31 PM
Despite formatting a column in Excel 2002 worksheet as Short Date. Pete Whalley Excel Discussion (Misc queries) 2 February 7th 05 06:17 PM
Conditional Formatting (Date vs Number) [email protected] Excel Discussion (Misc queries) 7 December 20th 04 10:23 PM
problem with formatting cell to date format Del Excel Worksheet Functions 7 December 8th 04 05:14 PM
Date Formatting Neil Excel Discussion (Misc queries) 6 December 4th 04 06:57 PM


All times are GMT +1. The time now is 07:45 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"