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