Этот макрос сделает это за вас.
Это создаст результат в новом столбце. Итак, моя версия смотрит на мой столбец A, который содержит неправильно отформатированный контент (EG W/1/1
). Я назначил, чтобы колонка B отображала новый результат.
Итак, убедитесь, что у вас есть лента разработчика и нарисуйте кнопку на панели управления. Когда он попросит вас назначить макрос, нажмите New. Вставьте следующее в новое окно поверх (удаляя все, что там было, и предполагая, что имя вашего макроса - Button1_Click)
Sub Button1_Click()
Dim cellRow As Integer
cellRow = 1 'UPDATE THIS IF YOUR FIRST ROW DOESN'T START AT ROW 1
For Each c In Range("A1:A2") ' UPDATE THIS FOR ALL CELLS
Dim splitString() As String
splitString = Split(c.Value, "/")
Dim result As String
result = splitString(0)
If (Len(splitString(1)) = 5) Then
result = result + "\" + splitString(1)
Else
Dim i As Integer
i = 5 - Len(splitString(1))
result = result + "\"
For x = 0 To i - 1
result = result + "0"
i = i + 1
Next x
result = result + splitString(1)
End If
If Len(splitString(2)) = 4 Then
result = result + "\" + splitString(2)
Else
Dim j As Integer
j = 4 - Len(splitString(2))
result = result + "\"
For y = 0 To j - 1
result = result + "0"
j = j + 1
Next y
result = result + splitString(2)
End If
Range("A" + CStr(cellRow)).Value = result ' UPDATE FROM A IF YOU DON'T WANT IT TO OVEWRITE EXISTING CONTENT
cellRow = cellRow + 1
Next
End Sub
Теперь это завершится сбоем, если у вас есть пустые ячейки или что-либо, что не существует в указанном вами формате, например, WT\456789456/12345AL
не будет работать должным образом
Но на самом деле это не касается значения альфа или числового значения, оно просто ожидает, что начальное значение будет желаемым типом символа.
Обновить
Код может быть сокращен в соответствии с превосходным комментарием @SeanCheshire
Ярлык для создания 5-символьной строки с добавлением нуля будет
right("00000" & splitstring(1),5)
Никаких циклов или дополнительных переменных не требуется. Вся ваша строковая конструкция будет
splitstring(0) & "\" & Right("00000" & splitstring(1), 5) & "\" & Right("00000" & splitstring(2), 5)