我有一个小VBA项目,但我遇到了问题。
我需要使用32个字符的十六进制字符串并将其转换为UUID。
Input: b10a8db164e0754105b7a99be72e3fe5
Output: b10a8db1-64e0-7541-05b7-a99be72e3fe5
我不知道从哪里开始,但我想我需要在这么多字符之后拆分字符串然后重新组合它。有效地执行此操作的任何指针或方法?
答案 0 :(得分:5)
您可以使用Left
,Right
和Mid
将其转换为您想要的格式。
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; (或任何细胞)
如果你传入的不是32个长度的字符串,它就不会格式化,只返回原始字符串。
答案 1 :(得分:1)
其他单元格中 A1 中的数据:
=MID(A1,1,8) & "-" & MID(A1,9,4) & "-" & MID(A1,13,4) & "-" & MID(A1,17,4) & "-" & MID(A1,21,9999)