首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA比较、添加行和填写

Excel VBA比较、添加行和填写
EN

Stack Overflow用户
提问于 2018-10-19 14:32:31
回答 1查看 51关注 0票数 1

这就是我的数据的一个例子:

A1。1

A2。2

A3。5

A4。7

A5。8

A6。9

A7。10

我要做的是选择一个范围(例如,从A2到包含数据的行的末尾),如果序列中的下一个数字不等于前一个数字+ 1,则插入一行。将该数字(前一个数字+1)填入刚才创建的行中,然后跳到下一行并重新计算。这将一直持续到程序遇到空值为止。

这就是我想象的假象

代码语言:javascript
复制
  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中的循环操作很糟糕,因为我上次使用它已经有很多年了。很抱歉格式化,这是在手机上做的

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-19 18:10:18

代码中的逻辑相当合理,但是如果您计划编写更多的代码,那么练习实际的语法也不会有任何伤害。我已经更改了它,这样它就可以检查单元格是否是空的--我假设这就是您所说的空,但是如果实际上是空的,那么您可以将isempty更改为isnull。我允许你选择一个范围,但不是真的。它要求您进入代码并将maxrow更改为您希望查看的最后一行。请记住,如果您的代码之间缺少数字,它将只查找100个值,包括宏放置的值。

如果希望用户能够更容易地将最后一行编号输入,请考虑使用InputBox

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52894527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档