Excel vba Autofilter верхние 10 строк, копирование результатов на основе критериев

В моей таблице есть данные в диапазоне A6: H105.

Я хочу отфильтровать первые десять строк (A6: H15) с фиксированными критериями в H-столбце и скопировать только столбцы A, D, E из результата

Пока у меня есть следующий код:

Sub Filter()
    ActiveSheet.Range("A6:H15").AutoFilter Field:=8, Criteria1:="xxx"
End Sub

Вопрос 1: Почему не фильтруется первая строка?

Вопрос 2: Как скопировать только столбцы A, D, E из диапазона после примененного фильтра?


person David    schedule 02.02.2015    source источник


Ответы (2)


Ответ 1: Дело в том, что Автофильтр обрабатывает первую строку как заголовок таблицы. Установите диапазон, чтобы начать с одной строки выше, с строки 5.

Ответ 2: Вы можете скопировать комбинированный диапазон следующим образом

Range("A6:A15, D6:D15, E6:E15").Copy

а затем вставьте его в три соседних столбца, где хотите.

Возможно, вам придется изменить диапазон, чтобы сначала выбрать только отфильтрованные или непустые ячейки.

person Marek Stejskal    schedule 02.02.2015

Вы можете сделать что-то вроде этого:

Sub Filter()

   ActiveSheet.Range("A6:H15").AutoFilter Field:=8, Criteria1:="xxx"
   Range("A:A,B:B,D:D").Select
   Selection.SpecialCells(xlCellTypeVisible).Select
   Selection.Copy
   Range("J1").PasteSpecial Paste:=xlPasteValues

End Sub
person Ivan Tokarev    schedule 31.03.2016