excel 根据两列汉字生成编号。

第一列汉字已经编好号,第二列根据第一列的编号来,比如第一列汉字的编号是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就自动没有了。有问题请回复,无问题烦请采纳!