VBA将行复制到其他工作表中的空行

时间:2018-08-31 13:16:53

标签: excel vba

我正在尝试创建一个宏以将数据从工作表A复制到工作表B。 工作表A只是填充有数据,没有任何布局。 工作表B具有特定的布局,应在其中粘贴工作表A的数据。 工作表B的前10行有标题,因此复制应从第11行开始。工作表A中的数据应从第2行开始。因此row2(A)=> row11(B),row3(A)=> row12(B) ),... 问题的这一部分的代码如下。

我苦苦挣扎的条件是,只应使用工作表B中列F中没有值的行。 因此,例如,如果工作表B中的第11-61行在F列中没有值,则工作表A的第2-52行应粘贴到工作表B的第11-61行中。如果单元格F62不为空,则应跳过该行zh_cn应该将工作表A的下一行(第52行)粘贴到工作表B的第63行中。依此类推,直到下一行在F列中包含数据。

到目前为止的代码:

@property ({type:cc.Enum(CollisionType)})
collisionType:CollisionType = CollisionType.Static;

谢谢!

2 个答案:

答案 0 :(得分:0)

请尝试使用2个单独的计数,其中1个用于跟踪您要复制的源行,另一个用于跟踪您要粘贴的目标行。那么您可以根据行是否通过条件等独立地增加它们。

如果要粘贴的块具有2组行计数:源开始和源结束,粘贴开始和粘贴结束。不花哨,但允许最大程度地控制和处理异常等。

答案 1 :(得分:0)

我通常使用这段代码来复制粘贴值。 很快

    Public Sub Copy()

        Dim Source As Worksheet
        Dim SourceRow As Long
        Dim SourceRange As String

        Dim Target As Worksheet
        Dim TargetRow As Long
        Dim TargetRange As String

        Dim ColumnCount As Long

        Set Source = ActiveWorkbook.Worksheets("Blad1")
        Set Target = ActiveWorkbook.Worksheets("Blad2")

        TargetRow = 11
        ColumnCount = Source.UsedRange.Columns.Count

        For SourceRow = 1 To Source.UsedRange.Rows.Count

            SourceRange = Range(Cells(SourceRow, 1), Cells(SourceRow, ColumnCount)).Address

While Target.Cells(TargetRow, 6).value <> ""
TargetRow = TargetRow + 1
Wend

TargetRange = Range(Cells(TargetRow, 1), Cells(TargetRow, ColumnCount)).Address

Target.Range(TargetRange).Value = Source.Range(SourceRange).Value

            TargetRow = TargetRow + 1
        Next

    End Sub