第3个回答 2012-02-27
假设日期从A列第一行开始
Sub changedate()
Dim mystr As String
For i = 1 To Range("a65535").End(xlUp).Row
mystr = ""
n = 0
For j = 1 To Len(Cells(i, 1))
x = Mid(Cells(i, 1), j, 1)
If x Like "[0-9]" Then
mystr = mystr & x
Else
If n = 0 Then
mystr = mystr & "-"
n = 1
Else
Exit For
End If
End If
Next j
If InStr(mystr, "-") > 0 Then
rstr = Right(mystr, Len(mystr) - InStr(mystr, "-"))
If Len(rstr) = 1 Then
rstr = "0" & rstr
End If
If Len(Left(mystr, InStr(mystr, "-") - 1)) = 4 Then
Cells(i, 1) = Val(Left(mystr, InStr(mystr, "-") - 1)) & rstr
Else
Cells(i, 1) = 2000 + Val(Left(mystr, InStr(mystr, "-") - 1)) & rstr
End If
Else
Cells(i, 1) = mystr
End If
Next i
End Sub