萧寒往往 2021-06-26 10:15 采纳率: 50%
浏览 39
已结题

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

第一列汉字已经编好号,第二列根据第一列的编号来,比如第一列汉字的编号是03,第二列是这个分类里面的第一个小类,编号就是0301 ,以此类推。

  • 写回答

1条回答 默认 最新

  • 碰碰虎 2021-06-26 23:08
    关注

    这个需求使用公式可能达不到,所以我采用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就自动没有了。有问题请回复,无问题烦请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日