我只有几列包含yyyymmdd格式的日期数据。我想验证条目是否有效。我该怎么办?
答案 0 :(得分:1)
选择整个列,然后运行“文本到列”,“固定宽度”,“日期:YMD”,“完成”。可以转换为真实日期的所有内容都将转换为真实日期。
with Selection
.TextToColumns Destination:=.cells(1), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, xlYMDFormat)
end with
答案 1 :(得分:0)
以下内容应验证Excel可以理解为yyyymmdd
格式的日期。
请注意,在1900日期系统中,有一种特殊情况适用于1900年2月29日。 1900年不是a年。但是Excel认为这是一个有效日期,据称可以创建与做相同事情的Lotus 1-2-3的兼容性。
Option Explicit
Function validExcelDate(num As Long) As Boolean
Dim Y As Long, M As Long, D As Long
Dim leapYr As Boolean
Dim dt1904 As Boolean
dt1904 = ThisWorkbook.Date1904
'Would also be valid year if test passed
If num < IIf(dt1904, 19040101, 19000101) _
Or num > 99991231 Then Exit Function
'special case
If num = 19000229 Then
validExcelDate = True
Exit Function
End If
D = num Mod 100
M = Int((num Mod 10000) / 100)
Y = Int(num / 10000)
'valid month
If M < 1 Or M > 12 Then Exit Function
'valid day
If D < 1 Then Exit Function
leapYr = LY(Y)
Select Case M
Case 4, 6, 9, 11
If D > 30 Then Exit Function
Case 2
If D > 29 Then Exit Function
If leapYr = False And D > 28 Then Exit Function
Case Else
If D > 31 Then Exit Function
End Select
validExcelDate = True
End Function
Private Function LY(yr As Long) As Boolean
If yr / 4 = Int(yr / 4) And _
Not (yr / 100 = Int(yr / 100)) Then _
LY = True
If yr / 400 = Int(yr / 400) Then LY = True
End Function