首页 > 解决方案 > 我的 excel 文件是德国(德语)格式,想更改为英语(英国)格式

问题描述

我已经尝试了多个代码,例如这样

在此处输入图像描述

Sub DateFixer()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
        For Each r In Selection
            v = r.Text
            r.Clear
            r.NumberFormat = "dd/mm/yyyy hh:mm:ss"
            r.Value = DateSerial(Mid(v, 7, 4), Mid(v, 4, 2), Left(v, 2)) + TimeSerial(Mid(v, 12, 2), Mid(v, 15, 2), Right(v, 2))
        Next r
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub

和这个

Application.ActiveWorkbook.Worksheets("data").Range("A1:A3").NumberFormat = "dd/mm/yyyy hh:mm:ss am/pm
"

和这个

Sub changeformat()

    Dim lastrow As Long
    lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    'MsgBox lastrow
    For i = 2 To lastrow
        Cells(i, 2).NumberFormat = ("dd/mm/yyyy hh:mm:ss am/pm")
    Next i

End Sub

但它仍然没有将我的 DateTime 更改为 9/12/20 09:28:00 am。我可以知道我做错了什么吗?

在此处输入图像描述

标签: excelvba

解决方案


您可以将每个部分拆分并强制它们成为日期。然后总结再改格式:

在此处输入图像描述

Sub changeformat()

Dim lastrow As Long
Dim i As Long

lastrow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lastrow
    Cells(i, 1).Value = CDate(Replace(Split(Cells(i, 1), " ")(0), ".", "/")) + CDate(Split(Cells(i, 1), " ")(1))
    Cells(i, 1).NumberFormat = ("dd/mm/yyyy hh:mm:ss am/pm")
Next i

End Sub

执行代码后,我得到:

在此处输入图像描述

请注意,该值9.12.20 09:27:60无法转换,因为09:27:60 它不是有效时间。秒总是从 00 到 59,而不是从 1 到 60。所以实际上09:27:60应该是09:28:00

恐怕您需要为这种情况编写异常代码。


推荐阅读