ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: o0star0o

[求助] 求写一个编号生成的宏,据是编号+1

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-19 21:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tigertc 发表于 2019-3-18 17:18
sorry,没发现还有超过2位的.把NU行代码改成以下就可以了.
NU = Int(Right(Cells(myr, 8), Len(Cells(myr ...

嗯嗯,测试可以用了,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-19 22:04 | 显示全部楼层
tigertc 发表于 2019-3-18 17:18
sorry,没发现还有超过2位的.把NU行代码改成以下就可以了.
NU = Int(Right(Cells(myr, 8), Len(Cells(myr ...

另外哥们,你这个代码里面的8是什么意思啊?是最多只能读取上面8行吗?我发现好像编号间隔行数太多了,就生成不了了呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-19 23:33 | 显示全部楼层
tigertc 发表于 2019-3-18 17:18
sorry,没发现还有超过2位的.把NU行代码改成以下就可以了.
NU = Int(Right(Cells(myr, 8), Len(Cells(myr ...

哥们,请求你下,就根据F1处的编号,然后在那上面+1再改下收字母就行了,F1处显示最后一个编号的公式非常准确,我长期测过的,今晚用了你的宏一晚上,发现在最后一个编号获取上有点不准,麻烦你帮我修改下,就采用F1位置的编号作为最后一个来加吧,这样很准确的
里面的公式是:
  1. =LOOKUP(1,0/(ISNUMBER(FIND($H$1,$H$3:$H$8888))*ISERR(FIND(".",$H$3:$H$8888))=1),$H$3:$H$8888)
复制代码
非常感谢,麻烦您了!帮个忙!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 00:12 | 显示全部楼层
tigertc 发表于 2019-3-18 17:18
sorry,没发现还有超过2位的.把NU行代码改成以下就可以了.
NU = Int(Right(Cells(myr, 8), Len(Cells(myr ...

等您回复!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-15 22:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tigertc 发表于 2019-3-18 17:18
sorry,没发现还有超过2位的.把NU行代码改成以下就可以了.
NU = Int(Right(Cells(myr, 8), Len(Cells(myr ...

能回复下下吗?

TA的精华主题

TA的得分主题

发表于 2019-5-16 11:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
应该是名字拼音和提定的字符有重复的吧,换一种方法你试下吧.

编号生成1.rar

37.47 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2019-5-16 12:11 | 显示全部楼层
你的公式不对的,需要另外处理一下
傲游截图20190516120757.png

TA的精华主题

TA的得分主题

发表于 2019-5-16 13:22 | 显示全部楼层
  1. Option Explicit

  2. Sub Test()
  3.     Dim SH As Worksheet
  4.     Dim arr As Variant, lngRow As Long
  5.     Dim strID As String, strName As String
  6.    
  7.     Set SH = Sheets("Sheet1")
  8.     lngRow = SH.Range("H" & Rows.Count).End(xlUp).Row
  9.     arr = SH.Range("H3:H" & lngRow)
  10.     arr = Application.WorksheetFunction.Transpose(arr)
  11.     strID = Trim(SH.Range("H1").Value)
  12.     strName = Mid(Trim(SH.Range("E" & lngRow + 1).Value), 1, 2)
  13.    
  14.     If strID <> "" And strName <> "" Then
  15.         SH.Range("H" & lngRow + 1).Value = GetPYByChar(strName) & strID & GetMaxIDBystr(strID, arr)
  16.     End If
  17.    
  18. End Sub


  19. Function GetMaxIDBystr(strSplit As String, arr As Variant) As Long
  20.     Dim arrTemp As Variant, lngID As Long, lngMax As Long
  21.     Dim arrResult As Variant
  22.    
  23.     arrTemp = Filter(arr, strSplit)
  24.    
  25.     If UBound(arrTemp) = -1 Then
  26.         lngMax = 0
  27.     Else
  28.         ReDim arrResult(LBound(arrTemp) To UBound(arrTemp)) As Long
  29.         For lngID = LBound(arrTemp) To UBound(arrTemp)
  30.             arrResult(lngID) = Split(arrTemp(lngID), strSplit)(1)
  31.         Next
  32.         lngMax = Application.WorksheetFunction.Max(arrResult)
  33.     End If
  34.    
  35.     GetMaxIDBystr = lngMax + 1
  36. End Function

  37. Function GetPYByChar(strChar As String) As String
  38.     Dim lngID As Long, lngChar As Long
  39.     Dim strTemp As String, strResult As String
  40.    
  41.     For lngID = 1 To Len(strChar)
  42.         strTemp = Mid(strChar, lngID, 1)
  43.         lngChar = 65536 + Asc(strTemp)
  44.         Select Case lngChar
  45.             Case 45217 To 45252: strTemp = "A"
  46.             Case 45253 To 45760: strTemp = "B"
  47.             Case 45761 To 46317: strTemp = "C"
  48.             Case 46318 To 46825: strTemp = "D"
  49.             Case 46826 To 47009: strTemp = "E"
  50.             Case 47010 To 47296: strTemp = "F"
  51.             Case 47297 To 47613: strTemp = "G"
  52.             Case 47614 To 48118: strTemp = "H"
  53.             Case 48119 To 49061: strTemp = "J"
  54.             Case 49062 To 49323: strTemp = "K"
  55.             Case 49324 To 49895: strTemp = "L"
  56.             Case 49896 To 50370: strTemp = "M"
  57.             Case 50371 To 50613: strTemp = "N"
  58.             Case 50614 To 50621: strTemp = "O"
  59.             Case 50622 To 50905: strTemp = "P"
  60.             Case 50906 To 51386: strTemp = "Q"
  61.             Case 51387 To 51445: strTemp = "R"
  62.             Case 51446 To 52217: strTemp = "S"
  63.             Case 52218 To 52697: strTemp = "T"
  64.             Case 52698 To 52979: strTemp = "W"
  65.             Case 52980 To 53640: strTemp = "X"
  66.             Case 53689 To 54480: strTemp = "Y"
  67.             Case 54481 To 62289: strTemp = "Z"
  68.         End Select
  69.         strResult = strResult & strTemp
  70.     Next
  71.     GetPYByChar = strResult & "ID"
  72. End Function


复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 08:24 , Processed in 0.033983 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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