这就是我的数据的一个例子:
A1。1
A2。2
A3。5
A4。7
A5。8
A6。9
A7。10
我要做的是选择一个范围(例如,从A2到包含数据的行的末尾),如果序列中的下一个数字不等于前一个数字+ 1,则插入一行。将该数字(前一个数字+1)填入刚才创建的行中,然后跳到下一行并重新计算。这将一直持续到程序遇到空值为止。
这就是我想象的假象
Range = select range in column
For range when value is not null
If A3 <> value in A2 +1
Insert row below A2
Insert value into new A2 (should Now be blank) as sum of A2 + 1
Then go to next row
Go back to blank check for loop
Else
Go to next row
Go back to blank check
End for我不完全确定我是否遗漏了一些东西,但我在VBA中的循环操作很糟糕,因为我上次使用它已经有很多年了。很抱歉格式化,这是在手机上做的
提前感谢!
发布于 2018-10-19 18:10:18
代码中的逻辑相当合理,但是如果您计划编写更多的代码,那么练习实际的语法也不会有任何伤害。我已经更改了它,这样它就可以检查单元格是否是空的--我假设这就是您所说的空,但是如果实际上是空的,那么您可以将isempty更改为isnull。我允许你选择一个范围,但不是真的。它要求您进入代码并将maxrow更改为您希望查看的最后一行。请记住,如果您的代码之间缺少数字,它将只查找100个值,包括宏放置的值。
如果希望用户能够更容易地将最后一行编号输入,请考虑使用InputBox。
Option Explicit
Sub numberfiller()
Dim i As Long
Dim maxrow As Long
i = 2
maxrow = 100
With ThisWorkbook.Worksheets(1)
While Not IsEmpty(.Range("A" & i).Value) And i < maxrow
If Not .Range("A" & i).Value = .Range("A" & i - 1).Value + 1 Then
.Range("A" & i).EntireRow.Insert shift:=xlDown
.Range("A" & i).Value = .Range("A" & i - 1).Value + 1
Else
i = i + 1
End If
Wend
End With
End Subhttps://stackoverflow.com/questions/52894527
复制相似问题