Преобразовать ДД-ММ-ГГ в ДД-ММ-ГГГГ с помощью функции sub / function - PullRequest
0 голосов
/ 19 мая 2018

Мне дали список дат регистрации для некоторых источников для назначения.Они хотят, чтобы я изменил даты, используя vba. Вопрос:

«Как и в предыдущем назначении, которое дал вам Директор, дата зачисления имеет« ненормальный »формат. Директор хочет, чтобы дата была изменена на«нормальный» датский формат «ДД-ММ-ГГГГ». Поэтому вы должны создать подпрограмму / функцию, которая изменит дату в поле на «правильный» формат. Так как функция должна запускаться несколько раз, выследует использовать соответствующие операторы выбора, чтобы проверить, что дата имеет «ненормальный» формат перед ее преобразованием ».

Я приложил фотографию в Excel img1

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

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

Function GetDate(cell)
    With CreateObject("VBScript.RegExp")
        .Pattern = "^(\d{2})-(\d{2})-(\d{2})$"
        With .Execute(cell)
            If .Count > 0 Then
                With .Item(0)
                    GetDate = Format(DateSerial(.SubMatches(2), .SubMatches(1), .SubMatches(0)), "dd-MM-yyyy")
                End With
            Else
                GetDate = cell
            End If
        End With
    End With
End Function
0 голосов
/ 19 мая 2018

Эта функция добавляет 20 перед частью года, если она содержит только 2 символа.

Function DateConvert(BtVal dt As String) As String
Dim parts As String()
parts = Split(dt, "-")
dd = parts(1)
mm = parts(2)
yy = parts(3)
DateConvert = dd & "-" & mm & "-" & IIf (Len(yy) = 2, "20" & yy, yy)
End Function

Возможно, вы захотите расширить эту логику, например, вместо "65" можно заменить "1965""2065", но я оставляю эту часть вам.

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