字母数字单元格格式(使用自定义格式)

字母数字单元格格式(使用自定义格式)

我想显示以下格式的字母数字代码:

已发布

其中 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) 

相关内容