Преобразование большого числа значений в британский формат даты в Excel VBA - PullRequest
0 голосов
/ 08 мая 2019

У меня есть лист с десятками тысяч дат в следующем формате: -

31.01.2018 (т. Дд.мм.гггг)

Формат ячейки каждого из них - Общий. Мне нужно преобразовать каждый из них в британский формат даты. Для этого я использую: -

With ThisWorkbook.Worksheets("Report")
    For i = 2 To Lastrow
        DateString = .Range("J" & i).Value
        Year = Right(DateString , 4)
        Month = Mid(DateString , 4, 2)
        Day = Left(DateString , 2)

        With .Range("J" & i)
            .Value = CDate(Day & "/" & Month & "/" & Year)
            .NumberFormat = "dd/mm/yyyy"
        End With
    Next i
End With

Это занимает довольно много времени, и я хотел знать, существует ли более эффективный способ преобразования дат?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Я смог решить эту проблему, используя ответ, приведенный здесь: -

https://stackoverflow.com/a/30609676/1936588

Изменение

.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)

На

.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlDMYFormat)
0 голосов
/ 08 мая 2019

Если я правильно понимаю и что-то не пропустил, вам не нужен VBA для этого. Просто выберите столбец J и найдите и замените . на /.

Если вы все равно хотите сделать это с помощью VBA, вы можете сделать это:

Sub test()
Dim sht As Worksheet
Dim rng As Range
Set sht = ThisWorkbook.Worksheets("Report")
Set rng = sht.Columns("J")
rng.Replace what:=".", replacement:="/"
End Sub

Для выполнения около 10 тыс. Дат требуется менее секунды.

EDIT:

Когда это будет сделано, значения будут распознаваться Excel как даты. Формат этих дат может быть установлен на европейский. Выберите столбец J, нажмите CTRL+1, на вкладке Number, под Category выберите Date и установите его в европейский формат.

enter image description here

Или просто добавьте эту строку в код выше:

rng.NumberFormat = "dd/mm/yyyy"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...