如何增加单元格范围字符串末尾的数字



我正在尝试编写代码来增加字符串末尾的数字。 我想在 H 列中获取字符串"FS_CAP_1_001",并将字符串向下递增行,使其递增为"FS_CAP_1_002"、"FS_CAP_1_003"、"FS_CAP_1_004"等。 但是,我只想在字符串以"FS_CAP_1_"开头时才这样做。

我在下面写了一些代码,但是当我编译项目以调试它时,我什至无法进入该函数。

我已经阅读了这个网站上的问题"字符串末尾的增量数字",以及其他一些相关问题,但我似乎无法正确将代码放在一起。 我是 VBA 的初学者,自从我用它编写任何代码以来,至少已经有一年了。

Function NumberIncrement_CapCode_Tier1_Lvl1(ByVal txt As String) As String
With Worksheets("PD Code Structure")
Dim i As Integer
Dim myVal As Integer
Dim cell As Range
For Each cell In Worksheets("PD Code Structure").Range(Cells(i, 8))
txt = cell.Value
myVal = Val(Split(txt, "_")(1)) + 1
NumberIncrement_CapCode_Tier1_Lvl1 = Split(txt, "_")(0) & "_" & Format(myVal, "000")
Next cell
End With
End Function

我的预期结果是对于"H"列中的每一行,其中字符串以"FS_CAP_1_"开头,后续行将递增以显示"FS_CAP_1_002"、"FS_CAP_1_003"、"FS_CAP_1_004"等。

当我编译项目以调试它时,我什至无法进入该函数。

正则表达式模式可以使用$作为代码来查找出现在字符串末尾的模式。

如果FS_CAP_1_部分是动态的,您可能希望使用仅处理字符串末尾的数字的内容。

Function myIncrement(str As String, _
Optional z As Integer = 3) As String
Dim rgx As Object, inc1 As String
Set rgx = CreateObject("vbscript.regexp")
With rgx
.Pattern = Format(z, "[-9]{0}$")
If .test(str) Then
inc1 = .Execute(str)(0)
myIncrement = Left(str, Len(str) - z) & Format(CLng(inc1) + 1, String(z, "0"))
End If
End With
End Function

在 A3 中,您可以通过引用 A2 中的FS_CAP_1_001来使用它。

=myIncrement(A2)

我能够使用以下代码使其正常工作:

Sub NumberIncrement()
With Worksheets("PD Code Structure")
Dim i As Integer
Dim cell As Range
i = 1
For Each cell In .Range("H2: H1006")
If InStr(cell.Value, "FS_CAP_1_") Then
cell.Value = cell.Value & Format(i, "000")
i = i + 1
End If
Next cell
End With
End Sub

谢谢大家的帮助!

最新更新