使用子/函数将DD-MM-YY转换为DD-MM-YYYY

时间:2018-05-19 14:22:03

标签: vba

我已获得一份作业的某些来源的注册日期列表。 他们希望我使用vba更改日期 问题是:

“与导演给你的上一份作业一样,报名日期是”非正常“格式。导演希望日期改为”正常“丹麦格式”DD-MM-YYYY“。你,因此,必须创建一个子/函数,将字段中的日期更改为“正确”格式。由于函数需要能够运行多次,您应该使用适当的选择语句来检查日期是否在“不”转换之前的正常“格式”。

我附上了excel的图片 img1

2 个答案:

答案 0 :(得分:0)

如果只有2个字符,此函数会在年份部分前附加20

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",但我会将该部分留给您。

答案 1 :(得分:0)

该函数将测试字符串是否与模式匹配。如果是,则返回格式化日期,否则返回相同的单元格值。

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