首页 > 解决方案 > 查找字符串范围内的最大值

问题描述

我有一个包含许多不同工作表的电子表格。每张表都有一个具有唯一 ID 的列,其组成如下:AD-S001、AD-S002、AD-S003 等。下一张表的唯一 ID 可以是 AD-M001、AD-M002 等。

我对 excel 中的 VBA 非常陌生,并且正在尝试编写一些代码来创建新记录,从而增加唯一 ID。唯一 ID 有时未排序,因此我需要找到该范围内的最大值,然后将其递增 1。

我已经有了其他代码,只是尝试添加在字符串范围内找到最大值的位并将其递增 1。

如果有人能帮助我如何最好地编写这个子例程,我将不胜感激。

谢谢

标签: excelvbaincrement

解决方案


请使用下一个功能:

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

推荐阅读