Excel vba Автофильтр топ 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 из диапазона после примененного фильтра?

2 ответа

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

Ответ 2: Вы можете скопировать комбинированный диапазон, как этот

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

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

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

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

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
Другие вопросы по тегам