У меня есть данные из внешнего источника, импортированные в таблицу Excel, которая содержит значения даты / времени, но в нестандартном формате, например «25/02/2019 09:35 AM»

Обратите внимание, что я нахожусь в Великобритании, поэтому мой формат даты по умолчанию - дд-мм-гг, а не мм-дд-гг

Когда данные импортируются в Excel, это по умолчанию общий формат. Чтобы получить его в пригодном для использования формате даты / времени, я обнаружил, что если я вставлю пробел перед "AM", то формат ячейки изменится на "пользовательский", который на самом деле является пользовательским форматом даты и времени, который работает именно так, как мне нужно.

Если я делаю это вручную, т.е. просто редактирую ячейку и вставляю пробел, она работает, как описано выше. Если я выполняю поиск и замену (так как у меня может быть список из 30 таких ячеек с данными в этом формате) и ищу "AM" и заменяю на "AM", то это также работает. (Я должен сделать второй поиск и заменить "ПМ", конечно)

Однако когда я сделал макрос (с помощью устройства записи макросов), выполнив только что описанный выше поиск и замену, формат ячеек изменился на mm-dd-yy вместо dd-mm-yy, и, как вы можете себе представить, это уничтожает все мои данные ,

Я не могу понять, почему это так и буду благодарен за любую помощь

Спасибо

1 ответ1

0

Вы должны опубликовать свой код. Вот действительно простой подход, который берет текст в ячейке, преобразует его в реальную дату / время 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

Вам нужно будет взять что-то вроде этого и поместить в цикл или сделать из него пользовательскую функцию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .