excel - 查找字符串范围内的最大值
问题描述
我有一个包含许多不同工作表的电子表格。每张表都有一个具有唯一 ID 的列,其组成如下:AD-S001、AD-S002、AD-S003 等。下一张表的唯一 ID 可以是 AD-M001、AD-M002 等。
我对 excel 中的 VBA 非常陌生,并且正在尝试编写一些代码来创建新记录,从而增加唯一 ID。唯一 ID 有时未排序,因此我需要找到该范围内的最大值,然后将其递增 1。
我已经有了其他代码,只是尝试添加在字符串范围内找到最大值的位并将其递增 1。
如果有人能帮助我如何最好地编写这个子例程,我将不胜感激。
谢谢
解决方案
请使用下一个功能:
Function newID(sh As Worksheet) As String
Dim lastR As Long, strID As String, arr As Variant, i As Long
lastR = sh.Range("A" & Rows.count).End(xlUp).Row
arr = sh.Range("A2:A" & lastR).Value
strID = left(sh.Range("A2").Value, 4)
For i = 1 To UBound(arr)
arr(i, 1) = CLng(Right(arr(i, 1), 3))
Next i
newID = strID & Format(WorksheetFunction.Max(arr) + 1, "000")
End Function
可以通过这种方式调用/使用它:
Sub testNewID()
Dim sh As Worksheet
Set sh = ActiveSheet 'use here the necessary worksheet
MsgBox newID(sh)
End Sub
推荐阅读
- javascript - 如何将变量值添加到附加?
- javascript - 为什么从某些网站发送 STUN 请求会失败?
- java - java - 当布尔值在java中发生变化时如何从方法返回?
- plsql - PL/SQL:我的绑定变量 var_dep 不在屏幕上打印任何内容。其他一切正常打印
- r - 结合 2 个虚拟变量
- python - 子类化 multiprocessing.queues.Queue
- python - Matplotlib:如何使用其句柄清除绘图元素
- google-apps-script - GoogleScript 没有标记想要的单元格
- javascript - Express 中间件类型不可分配
- javascript - ES6 JavaScript 将数组设置为普通控制台对象的属性