Excel中的date未被识别为date

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

我曾尝试过使用文本到列和date值,但这并不能解决问题。 我也读过这个post:

string未被识别为有效的date时间

我仍然有这个问题。

该文件来自英国。 我的电脑区域设置是荷兰语和美式键盘。 即使当我将我的区域设置设置为英国并重新打开文件,date仍然不被识别。 Excel将其视为文本。

随着一些文本的编辑,我可以取代31 – 3月16日23:51到31三月-16,然后取代3月3日。在这种情况下,问题解决,虽然这种方法是不是很有效,因为我收到这些文件定期。

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

谢谢!

由于语言环境设置,我怀疑月份缩写词没有被识别。 如果是这种情况,请select不正常的单元格并运行此macros:

 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()中的数组,就可以使macros适应任何语言的缩写。

要转换几个月没有VBA,你可以使用=FIND()=MID()函数像这样…

在这里输入图像说明

进一步使用=LEFT()=MID()=RIGHT()来分解你的源date,并根据你的规则编写一个正确的date。

另请参阅Excel使用date/时间和多种不同的区域格式。 VB? 公式?