然后VBA过滤器将行复制到新工作表? excel 2007

时间:2015-03-11 16:18:09

标签: excel-vba vba excel

我需要一种方法来复制具有过滤器用户自动过滤器

的数据的行

我的问题是我不知道为什么,但是当VBA从过滤器中复制并粘贴数据时,它会使两个纸张行限制一直下降到最大值。使我的文件大小更大,并增加更大的bc

    Columns("B:B").Select
    Selection.AutoFilter
    ActiveSheet.Range("$B:$B").AutoFilter Field:=1, Criteria1:="<>"
    Cells.Select
    Selection.Copy
    Sheets("Dump").Select
    Cells.Select
    ActiveSheet.Paste

我发现只有处理这个问题才能

    Columns("B:B").Select
    Selection.AutoFilter
    ActiveSheet.Range("$B:$B").AutoFilter Field:=1, Criteria1:="<>"

   'some how Copy all rows with data'

    Selection.Copy
    Sheets("Dump").Select
    Cells.Select
    ActiveSheet.Paste

我已经测试了没有VBA复制行,它确实没有任何错误,但我不知道如何编写VBA来做到这一点所以即时通讯 如何复制已经过滤的行,或者如果你碰巧知道那些不错的大小限制问题

2 个答案:

答案 0 :(得分:0)

这样的事情对你有用:

Sub tgr()

    Dim wsData As Worksheet
    Dim wsDest As Worksheet

    Set wsData = Sheets("Sheet1")
    Set wsDest = Sheets("Dump")

    With wsData.Range("B1", wsData.Cells(Rows.Count, "B").End(xlUp))
        .AutoFilter 1, "<>"
        .CurrentRegion.Copy wsDest.Range("A1")
        .AutoFilter
    End With

End Sub

答案 1 :(得分:0)

我相信这将在2007年有效,但我只能在2013年进行测试(并且有效)。尝试使用特殊的粘贴&#34; SkipBlanks&#34;选项:

ActiveSheet.Columns("B:B").AutoFilter
ActiveSheet.Range("$B:$B").AutoFilter Field:=1, Criteria1:="<>"
ActiveSheet.Columns("B:B").Copy
Sheets("Dump").Columns("B:B").PasteSpecial SkipBlanks:=True