2015-01-22 4 views
0

У меня есть небольшой проект VBA, но у меня проблема.Как форматировать строку в UUID в Excel VBA?

Мне нужно взять шестнадцатеричную строку с 32 символами и превратить ее в UUID.

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

Я понятия не имею, где начать с этим, но я думаю, что я должен был бы разделить строку после стольких символов, а затем вновь объединить его. Любые указатели или методы, чтобы сделать это эффективно?

+1

http://www.techonthenet.com/excel/formulas/mid.php – Brad

ответ

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)» (или любой другой клетки)

enter image description here

Если вы передаете в нечто иное, чем строка символов, в 32 длины она делает нет форматирования и просто возвращает исходную строку.

+1

работает удивительным, спасибо. Я действительно играл с MID(), когда вы разместили это, так что ваш комментарий действительно помог. Возьмите +25 реп. –

1

С данными A1 в другой ячейке:

=MID(A1,1,8) & "-" & MID(A1,9,4) & "-" & MID(A1,13,4) & "-" & MID(A1,17,4) & "-" & MID(A1,21,9999) 
Смежные вопросы