在 Excel 中使用宏时,我得到的结果与按相同顺序手动执行任务时得到的结果不同。您能帮忙修复这个宏吗?

在 Excel 中使用宏时,我得到的结果与按相同顺序手动执行任务时得到的结果不同。您能帮忙修复这个宏吗?

我将来自外部源的数据导入到 Excel 表中,其中包含日期/时间值,但格式为非标准格式,例如“25/02/2019 09:35AM”

请注意,我在英国,所以我的默认日期格式是 dd-mm-yy,而不是 mm-dd-yy

当数据导入 Excel 时,默认情况下是常规格式。为了将其转换为可用的日期/时间格式,我发现如果我在“AM”之前插入一个空格,那么单元格格式就会更改为“自定义”,这实际上是一种自定义日期时间格式,完全符合我的需要。

如果我手动执行此操作,即只需编辑单元格并插入空格,它就会按上述方式工作。如果我进行搜索和替换(因为我可能有 30 个这样的单元格列表,其中包含这种格式的数据),并搜索“AM”并替换为“AM”,那么它也会起作用。(当然,我必须对“PM”进行第二次搜索和替换)

但是,当我制作一个宏(使用宏记录器)执行上述搜索和替换时,单元格的格式会更改为 mm-dd-yy 而不是 dd-mm-yy,你可以想象这会破坏我的所有数据。

我不知道为什么会这样,如果能得到任何帮助我将不胜感激

谢谢

答案1

您应该发布您的代码。这是一种非常简单的方法,它获取单元格中的文本,将其转换为真正的 Excel 日期/时间,并将结果存储到相邻的单元格:

Sub Konverter()
    Dim stuff As String
    Dim tPart As String, dPart As String
    Dim t As Date, d As Date

    stuff = ActiveCell.Text
    arr = Split(stuff, " ")
    dPart = arr(0)
    tPart = arr(1)

    tPart = Replace(Replace(tPart, "A", " A"), "P", " P")
    t = TimeValue(tPart)

    arr2 = Split(arr(0), "/")
    d = DateSerial(arr2(2), arr2(1), arr2(0))

    With ActiveCell.Offset(0, 1)
        .NumberFormat = "dd/mm/yyyy hh:mm"
        .Value = d + t
    End With
End Sub

您需要采取类似这样的措施并将其放入循环中或用它创建一个用户定义的函数。

相关内容