2015-03-11 2 views
0

Мне нужен способ скопировать строки с данными, которые были фильтром пользователя автофильтромФильтр VBA затем копирует строки на новый лист? excel 2007

Моя проблема в том, что я не знаю, почему, но когда VBA копирует и вставляет данные из фильтра, он делает оба лимита границ строки дойти до максимума. Создание мой размер файла путь больше, и занимает больше бв добавленного размера

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, чтобы сделать это, чтобы то, что я спрашивал Как скопировать строки, которые были фильтром, или если вы случайно узнали о проблеме ограничения размера, что было бы неплохо для

ответ

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 
+0

Это только скопировать первую строку, как бы я получить число, сколько строк есть, так что я могу превратить ваш .CurrentRegion.Copy wsDest.Range («A1») в петлю –

+0

? Это не просто копирует первую строку, она копирует все видимые строки. Я тестировал его, и он отлично работает для меня. У вас есть полные строки, которые просто пустые ячейки разбивают ваши данные? Это единственное, что испортило бы «CurrentRegion» – tigeravatar

+0

да, но почему авто фильтр не заботится о пустых строках? –

0

Я считаю, что это сработает в 2007 году, но я могу проверить его только в 2013 году (и это сработало). Попробуйте использовать пасты специальный «SkipBlanks» вариант:

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 
Смежные вопросы