第一列汉字已经编好号,第二列根据第一列的编号来,比如第一列汉字的编号是03,第二列是这个分类里面的第一个小类,编号就是0301 ,以此类推。
这个需求使用公式可能达不到,所以我采用VBA代码的方式进行实现,有详细代码,亲测有效,还附有效果图,请采纳!!
Sub bianhao()
Dim intOrder As Integer '顺序号 整型便于计算
intOrder = 0 '首先设定为0
Dim strOrder As String '顺序号 字符串便于回填单元格
Dim preCat0 As String '上一个大类
Dim preCat1 As String '上一个小类
preCat0 = "" '初值赋空字符串
preCat1 = "" '初值赋空字符串
For r = 1 To 19 '这里根据你的图片我自己编的数据是从第1行开始到第19行结束,可以通过效果图看出来。
'务必要根据自己的情况进行调整
If Cells(r, 1).Value <> preCat0 Then '比对大类是否出现了变化
preCat0 = Cells(r, 1).Value
intOrder = 0
End If
If Cells(r, 4).Value <> preCat1 Then '比对小类是否出现了变化
preCat1 = Cells(r, 4).Value
intOrder = intOrder + 1
End If
'回填顺序号,务必提前将C列的单元格格式设置为文本!!!
strOrder = Space(Len(Str(intOrder)) - 1) & Trim(Str(intOrder))
strOrder = Replace(strOrder, " ", "0")
Cells(r, 3).Value = preCat0 & strOrder
Next
End Sub
务必要提前将A列和C列的单元格格式设置为文本,否则最开始的0就自动没有了。有问题请回复,无问题烦请采纳!