-1

Я хочу отобразить буквенно-цифровой код в этом формате:

А /DDDDD /DDDD

Где A - буква, а D - цифра. Если цифр меньше, должен отображаться начальный 0.

Пример:
W/1/1 отображает: W/00001/0001
Дисплеи Z/12345/1234 : Z/123345/1234
W/123/123 отображает: W/00123/0123

Значение в ячейке должно сохраняться в заданном формате (без 0).

1 ответ1

1

Этот макрос сделает это за вас.

Это создаст результат в новом столбце. Итак, моя версия смотрит на мой столбец 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) 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .