Excel:使用VBA将行复制到另一个工作表中的表

时间:2017-10-18 04:07:24

标签: excel excel-vba vba

我目前正在使用Excel中的电子表格。

我的目标是创建一个VBA,将具有特定条件的行复制到我的工作簿中的下一个工作表,并复制到"日志表"。

我的VBA看起来像这样:

Sub ImportRows()

    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Print").UsedRange.Rows.Count
    J = Worksheets("Store").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Store").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Print").Range("I2:I" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Print" Then

            xRg(K).EntireRow.Copy Destination:=Worksheets("Store").Range("A" & J +1) 
            xRg(K).EntireRow.Copy Destination:=Worksheets("Log").Range("A" & J +1) 
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Print" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

问题是当我从Sheet1复制时,名为Print,数据在表格中,但当我复制到下一张名为" store" (或日志) - 数据不会进入表格,但会出现在表格下方的第一行,因此无法对数据进行排序。

有关如何解决此问题的任何建议?我想,它可能与目的地范围有关,但我不确定。

我还在努力处理我正在复制的数据量 - 从"打印"到"存储"我只想复制细胞" A:H"而不是" EntireRow"。

我对Excel很新!我感谢任何帮助!

谢谢!

我上传了一个截图,显示" Store"在我运行宏之后看起来像。

enter image description here

http://imageshack.com/a/img922/9446/gpL9Ov.png

1 个答案:

答案 0 :(得分:0)

由于您有一个列表对象表,因此更容易。

要仅从行的A:H列复制,请使用Intersect()裁剪A:H列。

然后复制到列表对象表中,将目标设置为新的列表行

Intersect(xRg(K).EntireRow, Range("A:H")).Copy _
    Destination:=range("Table1").ListObject.ListRows.Add.Range

表名可以在下面找到,默认为表#:

Menu

table name