Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中的日期未识别为日期_Excel_Date_Datefield - Fatal编程技术网

Excel中的日期未识别为日期

Excel中的日期未识别为日期,excel,date,datefield,Excel,Date,Datefield,当我打开包含日期列的文件时,Excel不会将这些单元格识别为日期。单元格中的日期如下:2016年3月31日23:51 我尝试了文本到列和日期值,尽管这并不能解决问题。我也读过这篇文章: 但我还是有问题 该文件来自英国。我的计算机区域设置为荷兰语,键盘设置为美国。即使我将我的区域设置设置设置为UK并重新打开文件,日期仍然无法识别。Excel将其视为文本 通过一些文本编辑,我可以将2016年3月31日23:51替换为2016年3月31日,然后将2016年3月31日替换为3。在这种情况下,问题就解决

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

我尝试了文本到列和日期值,尽管这并不能解决问题。我也读过这篇文章:

但我还是有问题

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

通过一些文本编辑,我可以将2016年3月31日23:51替换为2016年3月31日,然后将2016年3月31日替换为3。在这种情况下,问题就解决了,尽管这种方法不是很有效,因为我会定期收到这些文件

有人知道更好的解决方法吗


谢谢

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

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

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

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

要转换没有VBA的月份,可以使用
=FIND()
=MID()
函数,例如

进一步使用
=LEFT()
=MID()
=RIGHT()
分解源日期,并根据规则组合正确的日期


另请参见

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

进一步使用
=LEFT()
=MID()
=RIGHT()
分解源日期,并根据规则组合正确的日期


另请参见

当您收到的Excel确实包含日期时,您打开它应该不会有问题,因为日期在内部存储为数字,并使用您的PC区域设置显示给您。如果原始文件包含以文本形式存储的日期,则需要搜索/替换月份名称以及日期和时间分隔符,以匹配当前区域设置(或任何临时选择的区域设置)。在困难的情况下,还有一个步骤可以包括使用
=VALUE()
将最后一个字符串净化为实际日期。谢谢Mike。事实上,我认为该文件包含以文本形式存储的日期。虽然2月份没有问题,因为2月份是2月份,荷兰语和英语都是。二月的日期被识别为日期。我想知道VBA DateValue或CDate返回了什么(不是工作表DateValue)。@Jeeped。好主意。在即时窗口中评估Cdate(“2016年3月31日23:51”)会产生
2016年3月31日11:51:00 PM
嗯,VBA非常以英语为中心,但我不知道它如何处理DA-DK上的英语月名(…?)系统。当您收到的Excel确实包含日期时,您打开它应该不会有问题,因为日期在内部存储为数字,并使用您的PC区域设置显示给您。如果原始文件包含以文本形式存储的日期,则需要搜索/替换月份名称以及日期和时间分隔符,以匹配当前区域设置(或任何临时选择的区域设置)。在困难的情况下,还有一个步骤可以包括使用
=VALUE()
将最后一个字符串净化为实际日期。谢谢Mike。事实上,我认为该文件包含以文本形式存储的日期。虽然2月份没有问题,因为2月份是2月份,荷兰语和英语都是。二月的日期被识别为日期。我想知道VBA DateValue或CDate返回了什么(不是工作表DateValue)。@Jeeped。好主意。在即时窗口中评估Cdate(“2016年3月31日23:51”)会产生
2016年3月31日11:51:00 PM
嗯,VBA非常以英语为中心,但我不知道它如何处理DA-DK(…?)系统上的英语月名。感谢你们两位的解决方案。这两种解决方案都可以很好地工作,尽管它仍然需要一种变通方法。由于我的文件不包含日期字段,我是否理解这是必要的?我希望通过以某种方式更改电脑设置来解决这个问题。我会上传我的文件给你看。无论如何,谢谢你,因为宏对用户非常友好。ps:我不知道如何上传Excel文件。谢谢你们两位的解决方案。这两种解决方案都可以很好地工作,尽管它仍然需要一种变通方法。由于我的文件不包含日期字段,我是否理解这是必要的?我希望通过以某种方式更改电脑设置来解决这个问题。我会上传我的文件给你看。无论如何,谢谢你,因为宏对用户非常友好。ps:我不知道如何上传Excel文件。