Конвертировать MMM-DD-YYYY текст в дату - PullRequest
1 голос
/ 26 марта 2020

У меня есть набор данных, который извлекается только как MMM-DD-YYYY. Я хотел бы преобразовать его в дату (формат MM / DD / YYYY), чтобы сравнить ее с другим набором данных.

Я записал макрос, чтобы просто заменить месяцы соответствующими числами, но я знаю, что должен быть лучший способ сделать это. Ниже мой

текущий код:

With ws1.Cells
.Replace What:="jan-", Replacement:="01-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="feb-", Replacement:="02-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="mar-", Replacement:="03-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="apr-", Replacement:="04-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="may-", Replacement:="05-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="jun-", Replacement:="06-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="jul-", Replacement:="07-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="aug-", Replacement:="08-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="sep-", Replacement:="09-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="oct-", Replacement:="10-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="nov-", Replacement:="11-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
.Replace What:="dec-", Replacement:="12-", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End With

1 Ответ

1 голос
/ 26 марта 2020

Это преобразует вашу текстовую строку в истинную дату для активной ячейки:

Sub datefix()
    Dim s As String
    s = ActiveCell.Value
    arr = Split(s, "-")
    ActiveCell.Value = arr(1) & " " & arr(0) & " " & arr(2)
End Sub

Вы можете отформатировать ее или l oop в соответствии с вашим сердцем.

(Я использую язык США)

РЕДАКТИРОВАТЬ # 1:

С вашим желаемым форматом:

Sub datefix()
    Dim s As String
    s = ActiveCell.Value
    arr = Split(s, "-")
    ActiveCell.Value = arr(1) & " " & arr(0) & " " & arr(2)
    ActiveCell.NumberFormat = "mm/dd/yyyy"
End Sub

До:

enter image description here

и после:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...