Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4115|回复: 6

[已解决]excel自动生成序列号编程

[复制链接]
发表于 2016-1-22 16:16 | 显示全部楼层 |阅读模式
本帖最后由 www040401 于 2016-1-22 16:24 编辑

excel2007增加一个生成序列按钮,需实现功能如下
1. 點擊“生成序号”按钮,在sheet2 中:序列号 栏自动生成序列号:编号+流水码(如 ABCDE1);NO. 栏自动生产编码(从1开始);日期栏 自动生产日期(当天)
2. 若sheet2中:存在序列号 栏的编号相同,则流水码自动加1(如 Sheet2中已存在ABCDE1,则点击“生成序号”按钮会自动在序列号 栏最后一列生成ABCDE2,以此类推
注:流水码:1~9;9之后是A~Z
       编号位数固定,但内容不定(数字+字母)
以上或见附件excel: BOOK.zip (11.03 KB, 下载次数: 11)
 楼主| 发表于 2016-1-22 16:39 | 显示全部楼层
大神啊~难道还没收到我的SOS呼叫??
回复

使用道具 举报

发表于 2016-1-22 17:03 | 显示全部楼层
  1. Sub 生成序号()
  2.     bm = Sheet1.[a2]
  3.     xl = "123456789ABCEFGHIJKLMNOPQRSTUVWXYZ"
  4.     With Sheet2
  5.         r = .[a65536].End(3).Row + 1
  6.         .Cells(r, 1) = Val(.Cells(r - 1, 1)) + 1
  7.         .Cells(r, 3) = Date
  8.         If r = 2 Then
  9.             .Cells(r, 2) = bm & "1"
  10.         Else
  11.             xh = Right(.Cells(r - 1, 2), 1)
  12.             x = InStr(xl, xh)
  13.             If x < Len(xl) Then xh = Mid(xl, x + 1, 1) Else xh = 1
  14.             .Cells(r, 2) = bm & xh
  15.         End If
  16.     End With
  17. End Sub
复制代码

BOOK.rar

21.98 KB, 下载次数: 20

评分

参与人数 1 +1 收起 理由
lidayu + 1 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-22 17:40 | 显示全部楼层
grf1973 发表于 2016-1-22 17:03

非常感谢,已经实现了大半功能,还有一点小瑕疵(如下图)还望帮忙修改一下,谢谢!
注:若编号相同,流水码才会加1,若编号不同,则流水码会从1开始

001.jpg

回复

使用道具 举报

 楼主| 发表于 2016-1-25 10:13 | 显示全部楼层
grf1973 发表于 2016-1-22 17:03

哈罗~可否再帮忙修改一下程序?我开始的想法是使用搜索定位序列号最后的流水码:搜索到n个相同项,则最后序列号流水码为n+1,搜索一次即结束。但程序总是错误,唉~老要命了……拜托帮帮忙,3Q~~Q

回复

使用道具 举报

发表于 2016-1-25 13:22 | 显示全部楼层    本楼为最佳答案   
  1. Sub 生成序号()
  2.     Dim xRng As Range
  3.     bm = Sheet1.[a2]
  4.     xl = "123456789ABCEFGHIJKLMNOPQRSTUVWXYZ"
  5.     With Sheet2
  6.         Set xRng = .Range("b:b").Find(bm, , , , , xlPrevious)
  7.         r = .[a65536].End(3).Row + 1
  8.         .Cells(r, 1) = Val(.Cells(r - 1, 1)) + 1
  9.         .Cells(r, 3) = Date
  10.         If xRng Is Nothing Then
  11.             .Cells(r, 2) = bm & "1"
  12.         Else
  13.             xh = Right(xRng, 1)
  14.             x = InStr(xl, xh)
  15.             If x < Len(xl) Then xh = Mid(xl, x + 1, 1) Else xh = 1
  16.             .Cells(r, 2) = bm & xh
  17.         End If
  18.     End With
  19. End Sub
复制代码

BOOK.rar

22.58 KB, 下载次数: 16

回复

使用道具 举报

 楼主| 发表于 2016-1-28 10:38 | 显示全部楼层
grf1973 发表于 2016-1-25 13:22

問題已解決~非常感謝!{:35:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 23:28 , Processed in 0.330502 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表