如何在Excel VBA中将字符串格式化为UUID?

时间:2015-01-22 00:06:20

标签: excel vba

我有一个小VBA项目,但我遇到了问题。

我需要使用32个字符的十六进制字符串并将其转换为UUID。

Input: b10a8db164e0754105b7a99be72e3fe5
Output: b10a8db1-64e0-7541-05b7-a99be72e3fe5

我不知道从哪里开始,但我想我需要在这么多字符之后拆分字符串然后重新组合它。有效地执行此操作的任何指针或方法?

2 个答案:

答案 0 :(得分:5)

您可以使用LeftRightMid将其转换为您想要的格式。

Function makeUuid(asString As String) As String
    Dim asUuidFormat As String
    If Len(asString) <> 32 Then
        makeUuid = asString
        Exit Function
    End If
    Dim firstPart As String, secondPart As String, thirdPart As String, fourthPart As String, fifthPart As String
    firstPart = Left(asString, 8)
    secondPart = Mid(asString, 9, 4)
    thirdPart = Mid(asString, 13, 4)
    fourthPart = Mid(asString, 17, 4)
    fifthPart = Right(asString, 12)
    makeUuid = firstPart & "-" & secondPart & "-" & thirdPart & "-" & fourthPart & "-" & fifthPart
End Function

您可以在工作表中使用`= makeUuid(A4)&#39; (或任何细胞)

enter image description here

如果你传入的不是32个长度的字符串,它就不会格式化,只返回原始字符串。

答案 1 :(得分:1)

其他单元格中 A1 中的数据:

=MID(A1,1,8) & "-" & MID(A1,9,4) & "-" & MID(A1,13,4) & "-" & MID(A1,17,4) & "-" & MID(A1,21,9999)