仅在填充第2行时才在excel复制行1中使用vba

时间:2017-05-07 03:41:20

标签: excel vba excel-vba

我想仅在填充B2:BV2时复制A1:AV1中的内容。我想复制空白而不会粘贴标签或空格中的空格。作为第二步,我需要将B2:BV2复制到行C,从而消除任何空白单元格。第三步我需要从行C中获取这些条目,这样只有4个条目填充后面的行D到末尾(不超过10行)。 我想出了以下只有部分粘贴(我能做的最好)。

Sub Copy()

    If IsEmpty(Range("A2").Value) = False Then
        ActiveSheet.Range("A1").Copy Range("A3")
    End If
    If IsEmpty(Range("B2").Value) = False Then
        ActiveSheet.Range("B1").Copy Range("B3")
    End If
    If IsEmpty(Range("C2").Value) = False Then
        ActiveSheet.Range("C1").Copy Range("C3")
    End If
    If IsEmpty(Range("D2").Value) = False Then
        ActiveSheet.Range("D1").Copy Range("D3")
    End If
    If IsEmpty(Range("E2").Value) = False Then
        ActiveSheet.Range("E1").Copy Range("E3")
    End If
    Sheet1.Range("a3:Y3").SpecialCells(xlCellTypeConstants).Copy ActiveSheet.Range("A4")

End Sub

直到AO之后它才会崩溃并且没有复制正确的细胞。我知道应该做的是数组的类型,但我无法弄清楚循环。

1 个答案:

答案 0 :(得分:1)

首先使用更好的循环进行单元格检查和复制,这将包含您想要的所有条件: PS。我的意思是代码中的逻辑不仅仅是我写的代码:

    For I = 1 To Sheet1.Columns.Count
        If Sheet1.Cells(1, I).Value <> "" and not IsNull(Sheet1.Cells(1, I).Value) Then
            I2=I2+1
            Sheet1.Cells(2, I2).Value=Sheet1.Cells(1, I).Value
        End if

        If Sheet1.Cells(2, I2).Value <> "" and not IsNull(Sheet1.Cells(2, I2).Value) Then
            I3=I3+1
            Sheet1.Cells(3, I3).Value=Sheet1.Cells(1, I2-1).Value
        End if
在此之后我认为你可以向前迈进。否则写下你面对的。