Vba Excel宏,用于根据包含数据的两个单元格之间的行数插入或删除行

Vba Excel宏,用于根据包含数据的两个单元格之间的行数插入或删除行,vba,excel,Vba,Excel,我说的是一个名字有三个空行,接下来是两个,然后是四个,然后是三个,依此类推 我在寻找一个最终结果,每个名字都有两个空行 这是我目前拥有的,它不起作用,只是在名字下面加了一行 Dim c As Range Dim counting As Boolean Dim zeroCount As Long For Each c In activeSheet.[A2:A30].Cells If Len(c) = 0 Then Exit For Else If


我说的是一个名字有三个空行,接下来是两个,然后是四个,然后是三个,依此类推

我在寻找一个最终结果,每个名字都有两个空行

这是我目前拥有的,它不起作用,只是在名字下面加了一行

Dim c As Range
Dim counting As Boolean
Dim zeroCount As Long

For Each c In activeSheet.[A2:A30].Cells
    If Len(c) = 0 Then
        Exit For
    Else
        If Not c.Value2 = "" Then
            counting = True
            Do While Not zeroCount = 3
                If zeroCount < 2 Then
                    c.Offset(1, 0).EntireRow.Insert Shift:=x1Down, CopyOrigin:=xlFormatFromLeftOrAbove
                    zeroCount = zeroCount + 1
                End If
                If zeroCount > 3 Then
                    c.Offset(1, 0).Delete Shift:=x1Up
                    zeroCount = zeroCount - 1
                End If
                End
            Loop
            zeroCount = 0
        Else
            If counting Then
                zeroCount = zeroCount + 1
            End If
        End If
    End If
Next c
尺寸c作为范围
布尔计数
将零计数设为长
对于activeSheet[A2:A30]中的每个c。单元格
如果Len(c)=0,则
退出
其他的
如果不是c.Value2=“”,则
计数=真
不执行zeroCount=3时执行
如果零计数小于2,则
c、 偏移量(1,0)。EntireRow.Insert Shift:=x1向下,CopyOrigin:=xlFormatFromLeftOrove
zeroCount=zeroCount+1
如果结束
如果zeroCount>3,则
c、 偏移量(1,0)。删除移位:=x1Up
zeroCount=zeroCount-1
如果结束
终止
环
零计数=0
其他的
如果算的话
zeroCount=zeroCount+1
如果结束
如果结束
如果结束
下一个c

谢谢你,阿坎图德,这正是我想要的


听起来您想先清除所有空行,然后运行一个循环,在每行之间插入两个空行和一个蓝行?首先通过自动筛选(更快)或使用循环(更容易编码)来删除空白行,类似于单元格(x,1)=“”然后行(x)。然后执行另一个循环-行(x).insert,行(x).insert,行(x).insert,范围(“A”&x+3&“:G”&x+3).INTERNAR.color=rgb(0,0255),x=x+4。看起来你已经取得了进步,在我看来,最好从清除所有空行开始。如果我能提供任何其他帮助,我会-阿坎图德19小时前

这就是我最后得到的

Dim cnt As Integer

Range("A2:A26").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
With activeSheet
    cnt = .Cells(.Rows.Count, "A").End(xlUp).Row
End With


For i = Range("A2").End(xlDown).Row To 3 Step -1
    'Gives rows to the last person
    If i = cnt Then
        Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
        Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
        Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
    End If
    Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
    Range("A" & i, "G" & i).Interior.Color = RGB(197, 217, 241)
    Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
    Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
Next i

这非常有效,谢谢

也许删除所有空行会更容易,然后执行一个简单的循环来添加2行?如果一个行是空的,你可以运行一个循环来删除它,或者让它自动排序,然后按字母顺序排序,所以所有的空白行都移动到最后。在一行加上一个名称,然后是空白行之后,还有一行,在下一个名称之前,有一个蓝色填充从一个G到单独的每个人的任务,这仍然很容易按照刚才描述的方式完成吗?听起来好像你想先清除所有的空白行,然后运行一个循环,在每行之间插入两个空白行和一个蓝色行?首先通过自动筛选(更快)或使用循环(更容易编码)来删除空白行,类似于单元格(x,1)=“”然后行(x)。然后执行另一个循环-行(x).insert,行(x).insert,行(x).insert,范围(“A”&x+3&“:G”&x+3).INTERNAR.color=rgb(0,0255),x=x+4。看起来你已经取得了进步,在我看来,最好从清除所有空行开始。如果我能提供任何其他帮助,我会的-