Разделение столбца даты и времени в Excel vba на два отдельных столбца дает разные результаты в зависимости от того, больше ли часть dd больше 12 или нет - PullRequest
0 голосов
/ 16 января 2019

Я использую следующий код:

Sub SplitDateTime()
Dim dDate As Date
Dim dTime As Date
Dim x As Integer

MsgBox "Split Date Time"

For x = 2 To 21
    'Sets the date in the cell of the first column
    dDate = Cells(x, 2)
    dTime = Cells(x, 2)
    Cells(x, 2).Value = Format(dDate, "dd/mm/yyyy")

    'Sets the time in the cell of the second column
    Cells(x, 3).Value = Format(dTime, "hh:mm")
Next x

При запуске я получаю следующее:

excel table

Обратите внимание, что строки с 2 по 6 не были правильно преобразованы. Кажется, что эти строки были изменены на mm / dd / yyyy вместо dd / mm / yyyy (они были первоначально 12/01/2019 ...), возможно, потому что преобразование несовместимо, и затем время было вставлено как 00: 00. У кого-нибудь есть предложения, как это исправить?

Это оригинал:

Original columns, the first column was subsequently deleted

Исходные столбцы, первый столбец впоследствии был удален

1 Ответ

0 голосов
/ 16 января 2019

Должно работать что-то вроде следующего:

Sub SplitDateTime()
Dim dDate As Date
Dim dTime As Date
Dim x As Integer

MsgBox "Split Date Time"
For x = 2 To 21
    'Sets the date in the cell of the first column
    dDate = Cells(x, 2)
    With Cells(x, 2)
        .Value = Int(dDate)
        .NumberFormat = "dd/mm/yy"
    End With

    'Sets the time in the cell of the second column
    With Cells(x, 3)
        .Value = dDate - Int(dDate)
        .NumberFormat = "hh:mm"
    End With
Next x
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...