Excel中的日期未被识别为日期

时间:2016-04-04 11:38:39

标签: excel date datefield

当我打开包含日期列的文件时,Excel不会将这些单元格识别为日期。单元格中的日期如下:31-Mar-16 23:51

我尝试过使用text-to-columns和datevalue,虽然这并没有解决问题。我也读过这篇文章:

String was not recognized as a valid date time

我仍有问题。

该文件来自英国。我的计算机区域设置是荷兰语用于语言,美国用于键盘。即使我将区域设置设置为UK并重新打开文件,仍然无法识别日期。 Excel将其视为文本。

通过一些文本编辑,我可以在31-Mar-16之前替换31-Mar-16 23:51然后将Mar替换为3.在这种情况下问题得到解决,尽管这种方法效率不高,因为我收到这些文件周期性。

有谁知道更好的方法来解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

我怀疑由于区域设置而无法识别月份缩写。如果是这种情况,请选择miscreant单元格并运行此宏:

Sub DateFixer()
    Dim r As Range, t As String
    Dim dy As Long, mont As Long, yr As Long, hr As Long, minn As Long
    For Each r In Selection
        t = r.Text

        ary = Split(t, " ")
        bry = Split(ary(0), "-")
        cry = Split(ary(1), ":")

        dy = CLng(bry(0))
        mont = mnth(bry(1))
        yr = 2000 + CLng(bry(2))

        hr = CLng(cry(0))
        minu = CLng(cry(1))
        r.NumberFormat = "General"
        r.Value = DateSerial(yr, mont, dy) + TimeSerial(hr, minu, 0)
    Next r
End Sub

Public Function mnth(st) As Long
    Dim sMth

    sMth = Array("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")
    With Application.WorksheetFunction
         mnth = .Match(st, sMth, 0)
    End With
End Function

请注意,只需更改 UDF()中的数组即可将宏调整为任何语言的缩写。

答案 1 :(得分:0)

要转换没有VBA的月份,您可以使用=FIND()=MID()这样的函数...

enter image description here

进一步使用=LEFT()=MID()=RIGHT()来分解您的来源日期,并根据您的规则撰写正确的日期。

另见Excel using date/time with multiple different region formats. VB? Formulas?