将过滤后的范围附加到工作表

时间:2016-09-16 15:38:35

标签: excel vba excel-vba excel-2007

使用此代码,我只是(感谢Slai)将过滤范围从一张纸复制并粘贴到另一张纸上。但是,我尝试通过将另一个过滤范围附加到HAA表来​​复制此代码,但由于某种原因,它会选择第11行并粘贴数据。

Sub Run()

    Application.ScreenUpdating = False

    Dim x As Long
    Dim rf As Range, wsTo As Worksheet, wx As Range

    Set rf = ThisWorkbook.Sheets("Table").UsedRange
    Set wsTo = Sheets("HAA")
    Set wx = ThisWorkbook.Sheets("HAA").UsedRange

    x = Range("B" & Rows.Count).End(xlUp).Row

    rf.AutoFilter
    rf.AutoFilter 12, "associated"
    rf.Copy

    wsTo.Range("A1").PasteSpecial xlPasteValues

    rf.AutoFilter
    rf.AutoFilter 12, "not found"
    rf.Offset(1, 0).Copy

我改变了这个(下面)选择查看它粘贴数据的位置,原来有.PasteSpecial xlPasteValues

    wsTo.Range("A1" & x).Select

    Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

要在最后一行之后粘贴,例如:

Dim rangeTo As Range
Set rangeTo = wsTo.UsedRange ' or = wsTo.Range("A1").CurrentRegion
Set rangeTo = rangeTo.Offset(rangeTo.Rows.Count)(1) ' (1) is to get the first cell 
Application.Goto rangeTo ' optional if you want to see where the values will be pasted
rangeTo.PasteSpecial xlPasteValues

代码中的问题是,在粘贴和过滤数据之前,您将获得最后一行。此外,Range(通常是指当前有效的工作表,可能并不总是您想要的工作表,因此最好在范围之前指定工作表:

 x = wsTo.Range("B" & wsTo.Rows.Count).End(xlUp).Row