在序列中为每个错过的数字插入一行

我正在寻找为我的序列中的每个错过的数字插入一行。 例如,我有“35C-1412-K01”和“35C-1421”,这个想法是为1412到1421之间的每一个错过的数字添加一行。然而,我之前做过这个,我使用的代码不工作因为这个代码比较了单元格中的最后5个字符,而我正在寻找更多的单元格的中间数字。 我的想法是可能使用“MID”属性而不是“RIGHT”属性,但是我很难实现这一点。 在第一个“ – ”即“35TC-1411”之前,我还有一些单元格有三个以上的字符,所以如果仅仅只有三个字符,就可能丢掉代码。 任何帮助,这是非常感谢。

上面我引用的代码:

Option Explicit Sub InsertNullTest() Dim i As Long, gap As Long Dim WorkRng As Range On Error Resume Next Set WorkRng = Application.InputBox(Prompt:="Range To Check", Title:="Select a Range", Default:=Selection.Address, Type:=8) On Error GoTo 0 If WorkRng Is Nothing Then Exit Sub '<--| check user hasn't canceled the dialog box With WorkRng For i = .Rows.Count To 2 Step -1 gap = Right(.Cells(i), 5) - Right(.Cells(i - 1), 5) If gap > 1 Then .Cells(i).Resize(gap - 1).Insert xlDown Next End With End Sub 

你可以使用分割。 这段代码假设你的string的第一个和第三个元素是不变的。

 Sub InsertNullTest() Dim i As Long, v1, v2, j As Long Dim WorkRng As Range On Error Resume Next Set WorkRng = Application.InputBox(Prompt:="Range To Check", Title:="Select a Range", Default:=Selection.Address, Type:=8) On Error GoTo 0 If WorkRng Is Nothing Then Exit Sub '<--| check user hasn't canceled the dialog box With WorkRng For i = .Rows.Count To 2 Step -1 v1 = Split(.Cells(i), "-") v2 = Split(.Cells(i - 1), "-") If Val(v1(1) - v2(1)) > 1 Then .Cells(i).Resize(Val(v1(1) - v2(1)) - 1).Insert xlDown For j = 1 To Val(v1(1) - v2(1)) - 1 .Cells(i - 1).Offset(j) = v2(0) & "-" & Val(v2(1)) + j & "-" & v2(2) Next j End If Next End With End Sub