能否用Custom Formats实现仓库电子设备编码自动补全?
设备编码自动格式化方案
一、仅输入数字时,用自定义格式即可实现
如果你的输入是纯数字(比如输入1),想要自动生成TYPE-000001,完全不需要VB,用自定义格式就能搞定:
- 选中需要设置的单元格区域
- 按
Ctrl+1打开「设置单元格格式」窗口 - 切换到「数字」选项卡,选择「自定义」类别
- 在「类型」输入框中输入:
"TYPE-"000000 - 点击「确定」保存设置
之后只要在这些单元格里输入数字,就会自动显示为TYPE-XXXXXX的格式(数字自动补零到6位)。
二、输入“type1”这类文本+数字组合时,需要用VB实现
如果必须输入type1这类包含类型码的内容,再自动转换为大写类型码+补零数字的格式,自定义格式就无法完成了——因为它没法拆分输入内容里的字母和数字,也不能自动将小写字母转为大写。这时候需要用VBA代码来处理:
- 按
Alt+F11打开VBA编辑器 - 找到对应的工作表,双击打开代码窗口
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim inputText As String Dim typeCode As String Dim numPart As String ' 设置需要生效的单元格范围,比如A列就写Range("A:A") Set cell = Intersect(Target, Me.Range("A:A")) If cell Is Nothing Then Exit Sub Application.EnableEvents = False For Each cell In cell inputText = Trim(cell.Value) If inputText <> "" Then ' 提取前4位作为类型码并转大写 typeCode = UCase(Left(inputText, 4)) ' 提取剩余部分作为数字并补零到6位 numPart = Right("000000" & Mid(inputText, 5), 6) cell.Value = typeCode & "-" & numPart End If Next cell Application.EnableEvents = True End Sub
- 保存代码,回到工作表后,在指定列输入
type1,就会自动变成TYPE-000001。
内容的提问来源于stack exchange,提问作者Zeki
相关产品推荐
相关产品推荐

