我想显示以下格式的字母数字代码:
已发布
其中 A 为字母,D 为数字。如果数字较少,则应显示前导 0。
例如:
W/1/1 显示:W/00001/0001
Z/12345/1234 显示:Z/123345/1234
W/123/123 显示:W/00123/0123
单元格中的值应保持给定的格式(不带前导 0)。
答案1
这个宏将为您完成此操作。
这将在新列中创建结果。因此,我的版本查看包含格式不正确的内容(例如W/1/1
)的 A 列。我已指定让 B 列显示新结果。
因此,请确保您有开发人员功能区并从“控件”窗格中绘制一个按钮。当它要求您分配宏时,单击“新建”。将以下内容粘贴到顶部的新窗口中(删除那里的所有内容并假设您的宏名称为 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
将无法按预期执行
但是,这并不真正关心值是 Alpha 还是数字,它只是期望初始值是所需的字符类型。
更新
代码可以按照@SeanCheshire 的出色评论缩短
制作 5 个字符零填充字符串的快捷方式是
right("00000" & splitstring(1),5)
无需循环或额外变量。整个字符串结构将是
splitstring(0) & "\" & Right("00000" & splitstring(1), 5) & "\" & Right("00000" & splitstring(2), 5)