Измените формат даты дд / мм / гггг на мм / дд / гггг - PullRequest
0 голосов
/ 26 мая 2020

Источник данных - текстовый файл в формате dd/mm/yyyy. Даты заполняются в двух столбцах: N и O. Желаемый результат должен иметь все даты в этих двух столбцах, переформатированных в mm/dd/yyyy

txt файл:

N           O
05/12/20    14/05/2020

Пока что у меня есть следующий код:

Sub Format_Dates()
Range("N:N").Select
    Selection.NumberFormat = "mm/dd/yy;@"

Range("O:O").Select
    Selection.NumberFormat = "mm/dd/yy;@"
End Sub

Код не работает в течение дней с 13 по 31.

Оцените любой ввод. THX

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Сначала рассмотрите региональные настройки вашей системы. Так как вы можете запутаться, если наберете 11/10/2001, какая дата будет правильной? Thursday, October 11, 2001 или Saturday, November 10, 2001? Это зависит от вас.

Действуйте с этим отказом от ответственности:

Sub formatDate()
    'dd/mm/yyyy
    'to
    'mm/dd/yyyy

    Dim str As String 'your string with the date this way: dd/mm/yyyy
    Dim D 'to days
    Dim M 'to months
    Dim Y 'to years

    str = "11/10/2001" 'dd/mm/yyyy
    D = CInt(Left(str, 2)) 'Need to cast this "11" to this 11.
    M = CInt(Mid(str, 4, 2))
    Y = CInt(Right(str, 4))

    Dim DD As Date 'define the vas as a Date to tell the system to use the regional setting of dates
    DD = DateSerial(Y, M, D) 'Now we just need to insert the values inside DateSerial as the function need
    Range("N1").Value = DD 'Send the value to the cell you need, here I use N1

    'Range("N:N").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy" 'Use the format you want. I like this.

    Range("N:O").NumberFormat = "mm/dd/yyyy" 'This is your format. Both columns 
End Sub
0 голосов
/ 26 мая 2020

Почему ты поставил только два y? Это должно быть «мм / дд / гггг»:

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